当循环遍历这样的变量时,我遇到了一个问题。我准备了两个示例来展示这个问题。
示例1:
#!/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具备安全空间性质呢?