Answers:
$ @是bash中两个“位置参数”表示形式之一,另一个是$ *。
$ @和$ *都是内部bash变量,它们表示传递到函数或脚本中的所有参数,但有一个键差异,$ @将每个参数都作为单独的带引号的字符串,而$ *将所有参数都作为单个字符串。以下代码显示了这种差异:
foo() {
while [ "$1" != "" ]; do
echo $1
shift
done
}
dollar_at () {
foo "$@"
}
dollar_star () {
foo "$*"
}
echo "Using \$@"
dollar_at a b c
echo "Using \$*"
dollar_star a b c
输出:
Using $@
a
b
c
Using $*
a b c
注意,当用$ *调用时,正好一个参数传递给foo(),但是用$ @时,三个参数传递给foo()。
更多信息:http : //tldp.org/LDP/abs/html/internalvariables.html#APPREF
$1
,$2
等等反正不管$@
。