bashで2つの配列を印刷する方法の違い

bashで2つの配列を印刷する方法の違い

私のスクリプトで配列が宣言されています。

NAME[0]=Deepak
NAME[1]=Renuka
NAME[2]=Joe
NAME[3]=Alex
NAME[4]=Amir

echo "All Index: ${NAME[*]}"
echo "All Index: ${NAME[@]}"

上記の配列全体を印刷する方法は2つあります。誰かがこれらの方法の違いを書くことができますか?

ベストアンサー1

  • echo "All Index: ${NAME[*]}"同じecho "All Index: ${NAME[0]} ${NAME[1]} ${NAME[2]} ${NAME[3]} ${NAME[4]}"
  • echo "All Index: ${NAME[@]}"等号変数echo "All Index: ${NAME[0]}" "${NAME[1]}" "${NAME[2]}" "${NAME[3]}" "${NAME[4]}"の最初の文字IFSは空白です(デフォルト)。

実行結果を見ることができますcopy.sh


IFS変数のデフォルト値はです$' \t\n'${array[*]}そして、$*変数の最初の文字に分割された文字列を出力しますIFS。分割する文字を変更することもできます。

NAME[0]=Deepak
NAME[1]=Renuka
NAME[2]=Joe
NAME[3]=Alex
NAME[4]=Amir

IFS=:
echo "All Index: ${NAME[*]}"
# Output: `All Index: Deepak:Renuka:Joe:Alex:Amir`

IFS=
echo "All Index: ${NAME[*]}"
# Output: `All Index: DeepakRenukaJoeAlexAmir`

IFS=$', \t\n'
echo "All Index: ${NAME[*]}"
# Output: `All Index: Deepak,Renuka,Joe,Alex,Amir`

おすすめ記事