在循環這樣的變量時出現問題。我準備了兩個例子來展示這個問題。
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