我想讓DIR遍歷所有參數(使用空格和「」)。但是這個代碼並不認可,「cd ef」就是其中之一。將它們分成兩部分。 我該怎麼做?bash參數在一個變量中,然後循環遍歷
#test.sh
echo Number of arguments: $#
if [ $# -eq 0 ]
then
echo "No arguments"
DIR=.
else
DIR="$*"
fi
echo DIR =$DIR
for arg in $DIR;
do
echo $arg;
done
命令
#bash test.sh ab "cd ef"
輸出,自變量數:2
但是,列舉在環3層的元件ab, cd
,和ef
。
我知道,我能做的,
for arg in "$*";
但是,這不是在這種情況下的解決方案。我可以使用DIR來達到這個目的嗎? 該平臺是OSX Mavericks外殼。
'$ *'是幾乎從來沒有適合使用 - 它加到論點的第一個字符'IFS',這意味着如果IFS的第一個字符出現任何參數,就不可能區分參數和參數內的字符*。 – 2014-09-03 15:08:20
另外,非導出的非內建變量應至少包含一個小寫變量,以避免潛在的與環境變量和內建命名空間的命名空間衝突。 – 2014-09-03 15:09:03
BashFAQ#50,http://mywiki.wooledge.org/BashFAQ/050是(相切)相關的,因爲它解決了許多相同的誤解,導致在不適用的情況下使用標量變量。 – 2014-09-03 15:11:06