ShellScript
Bash

シェル — スペースが含まれる配列要素をループする

注意

コメント欄参照

検証

ループの中で、添え字を使って配列要素にアクセスする。

example.sh
arr=(
"Space delimited text A"
"Space delimited text B"
"Space delimited text C"
)


for ((i = 0; i < ${#arr[@]}; i++))
do
  echo "${arr[$i]}"
done

結果

$ bash example.sh
Space delimited text A
Space delimited text B
Space delimited text C

問題

以下の書き方では、スペースの区切りで別要素として扱われてしまっていた。

example.sh
arr=(
"Space delimited text A"
"Space delimited text B"
"Space delimited text C"
)

for item in ${arr[@]}; do
  echo "$item"
done
$ bash example.sh
Space
delimited
text
A
Space
delimited
text
B
Space
delimited
text
C

環境

  • bash 4.4.0