私はUnixを学び始めたばかりで、コマンドラインパラメータに関する非常に基本的な質問があります。
私のスクリプトで次のことをしているとしましょう。
echo $@ #Now this prints all the command line arguments
args=$@ #Args array will take the command line argument array from $@
echo $args
ここで最後のステートメントに問題があります。echo arrayname
最初のインデックス要素のみを印刷する必要がありますが、なぜ配列全体を表示するのですか?
Unixで通常の配列を取り、配列名がARRであると言うと、echo ARRを使用すると、すべての要素の代わりに最初の要素が表示されます。それでは、動作が上記のargsと異なる理由は何ですか?
ベストアンサー1
$@
$@
「統合インデックス」があるため、インデックスのない通常の配列変数とは異なる動作をします。これは常に「すべての要素」を意味します。
set -- a b c
echo $@
a b c
set -x
var=$@
+ var='a b c'
ar=(a b c)
+ ar=(a b c)
echo $ar
+ echo a
a