位置パラメータ拡張とカスタム配列拡張の他の結果

位置パラメータ拡張とカスタム配列拡張の他の結果

下記のコマンド出力の違いを理解していません。

INPUT="$@"
echo "$INPUT ${#INPUT} ${#INPUT[@]} ${#@}"
# outputs: a b c 5 1 3

arr=(a b c)
echo "$arr ${#arr} ${#arr[@]}"
# outputs: a 1 3

私はスクリプトを実行するために使用します./my_script.sh a b c

私はこれが最初の要素をecho "$arr" 逆参照して$arrから印刷することを知っていますa。また、$INPUTコマンドを印刷してくださいa b c

コマンド${#INPUT}${#INPUT[@]}理由の場合、出力はそれぞれ5とです1${#arr}コマンドの出力に似てはいけませんか${#arr[@]}

ベストアンサー1

配列を$@次に割り当てます。スカラー INPUTa b c、結果は長さが5と評価され、「配列」の要素数が1の文字列です。

たぶん配列を配列として割り当てようとしますか?

input=( "$@" )

おすすめ記事