[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


总结,总是要用"$@" (双括号括起来的$@),所有参数的串联字符串,则用"$*" (仍然是双括号括起来的$*)。




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