回答:
$@
関数を呼び出すときに使用されるすべてのパラメータに変数が膨張するので、
function foo()
{
echo "$@"
}
foo 1 2 3
表示されます1 2 3
。関数内で使用されない場合、スクリプトを呼び出すときに使用されるすべてのパラメーターを指定します。詳細については、bashのマニュアルページを参照してください。
$ @は、bashの2つの「位置パラメータ」表現の1つで、もう1つは$ *です。
$ @と$ *は両方とも、関数またはスクリプトに渡されるすべてのパラメーターを表す内部bash変数です。1つの重要な違いは、$ @にはそれぞれのパラメーターが引用符で囲まれた文字列であるのに対し、$ *はすべてのパラメーターが単一の文字列であるということです。その違いは、次のコードに示されています。
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()には1つの引数が渡されますが、$ @では3つの引数がfoo()に渡されます。
詳細:http : //tldp.org/LDP/abs/html/internalvariables.html#APPREF
$1
、$2
などとして利用できます$@
。