文字列から、各エントリがその文字列の各Wordである配列に移動する必要があります。たとえば、次のように始まります。
VotePedro="Vote for Pedro"
配列が必要です:
Vote
For
Pedro
その後、次のように反復できるはずです:
for i in "${votePedroArray[@]}"
do
## Do something
done
VotePedro="Vote for Pedro"
votePedroArray=(${VotePedro})
変数の展開を引用符で囲まないままにした場合。 $VotePedro
、次の手順が実行されます。
IFS
変数の値の文字です。デフォルトでは、スペース、タブ、改行です。したがって、ワイルドカード展開をオフにし、値が引用符の外の文字列である変数を展開することにより、文字列を空白で区切られた要素に分割できます(IFS
のデフォルト値を想定)。
VotePedro="Vote for Pedro"
set -f
votePedroArray=($VotePedro)
set +f
for i in "${votePedroArray[@]}"; do …
使用時に直接分割できます。これは、配列を持たないshなどのシェルでも機能します。
VotePedro="Vote for Pedro"
set -f
for i in ${votePedro}; do
set +f
…
done
set +f
$IFS
で壊す以外に、好きなところで壊すこともできます。
set ''
while case $var in
(* *) ;; (*)
! a=("$var$@")
esac
do set '' "${var##* }$@"
var=${var% "$2"}
done
...空白で区切られたnullフィールドも可能になります。