在循环这样的变量时出现问题。我准备了两个例子来展示这个问题。
EX1:
#!/bin/bash
DIRS="[email protected]"
for DIR in $DIRS; do
echo "$DIR"
done
EX2:
#!/bin/bash
for DIR in "[email protected]"; do
echo "$DIR"
done
第二个例子的工作原理如预期(和所需的)。快速测试如下:
$ ex1 "a b" "c"
a
b
c
$ ex2 "a b" "c"
a b
c
究其原因,我为什么要使用第一种方法是因为我希望能够到多个目录传递给程序或没有使用当前目录。像这样:
[ $# -eq 0 ] && DIRS=`pwd` || DIRS="[email protected]"
那么,我如何得到例1是空间安全的?
Aaah,我尝试了很多,我非常接近。我只是忘了$ {DIRS [@]}的引号。谢谢 – Frank 2011-05-01 23:01:42
@Frank:数组符号有点繁琐 - 每次使用它时都必须返回参考手册。我越来越好,但有多年Bourne shell经验可以覆盖。 – 2011-05-01 23:07:35