シェルスクリプトで、$@
と$*
の違いは何ですか?
スクリプト引数を取得するために推奨される方法はどれですか。
これについて異なるシェルインタープリターの間に違いはありますか?
A key POVとの違いは、 "$ @"は元の引数の数を保持することです。 onlyの形式です。そのため、スクリプトで引数を渡すのに非常に便利です。
たとえば、ファイルmy_scriptに次のものが含まれているとします。
#!/bin/bash
main()
{
echo 'MAIN sees ' $# ' args'
}
main $*
main $@
main "$*"
main "$@"
### end ###
そして私はそれを次のように実行します:
my_script 'a b c' d e
私はこの出力を取得します:
MAINは5つの引数を見ます
MAINは5つの引数を見ます
MAINは1つの引数を参照します
MAINは3つの引数を見ます
$ @では、各パラメーターは引用符付きの文字列です。それ以外は同じように動作します。
参照: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF