[Happy BASH] BASH中的$*和$@的區別

首先來看一段BASH代碼:

echo "\$@=" $@
echo "\"\$@\"=" "$@"

echo "print each param from \$@"
for var in $@
do
        echo $var
done

echo "print each param from \"\$@\""
for var in "$@"
do
        echo "$var"
done

echo "print each param from \$*"
for var in $*
do
        echo "$var"
done

echo "print each param from \"\$*\""
for var in "$*"
do
        echo "$var"
done

執行./test.sh "a a" b c d,將會得到以下輸出:

$@= a a b c d
"$@"= a a b c d
print each param from $@
a
a
b
c
d
print each param from "$@"
a a
b
c
d
print each param from $*
a
a
b
c
d
print each param from "$*"
a a b c d


總結,總是要用"$@" (雙括號括起來的$@),所有參數的串聯字符串,則用"$*" (仍然是雙括號括起來的$*)。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章