Bash – 在变量中保存$@时是空间安全的
发布时间:2020-12-16 01:20:27 所属栏目:安全 来源:网络整理
导读:循环这样的变量时遇到问题.我准备了两个例子来说明问题. EX1: #!/bin/bashDIRS="$@"for DIR in $DIRS; do echo "$DIR"done EX2: #!/bin/bashfor DIR in "$@"; do echo "$DIR"done 第二个示例按预期(和必需)工作.快速测试如下: $ex1 "a b" "c"abc$ex2 "a b
循环这样的变量时遇到问题.我准备了两个例子来说明问题.
EX1: #!/bin/bash DIRS="$@" for DIR in $DIRS; do echo "$DIR" done EX2: #!/bin/bash for DIR in "$@"; do echo "$DIR" done 第二个示例按预期(和必需)工作.快速测试如下: $ex1 "a b" "c" a b c $ex2 "a b" "c" a b c 原因,我为什么要使用第一种方法是因为我希望能够将多个目录传递给程序,或者没有使用当前目录.像这样: [ $# -eq 0 ] && DIRS=`pwd` || DIRS="$@" 那么,我如何让例1保持空间安全?
使用数组而不是简单变量.
declare -a DIRS DIRS=("$@") for d in "${DIRS[@]}" do echo "$d" done 这会产生结果: $bash xx.sh a "b c" "d e f g" h z a b c d e f g h z $ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |