下記のコマンド出力の違いを理解していません。
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
配列を$@
次に割り当てます。スカラー INPUT
a b c
、結果は長さが5と評価され、「配列」の要素数が1の文字列です。
たぶん配列を配列として割り当てようとしますか?
input=( "$@" )