echoお問い合わせ基本質問

echoお問い合わせ基本質問

私は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

おすすめ記事