bashはshellと違って、foreachが使用できないので
もし同じような利用を求める場合には、配列を利用すること
■配列の設定
array=(1 2 3 4 5)
■使用方法
$ for num in ${array[@]};do
$ echo ${num}
$ done
■結果
1
2
3
4
5
■+@として・・
$ array=(a b c d)
$ i=0
$ while [ $count -le 4 ];do
$ echo "${array[i]}"
$ i=`expr $i + 1`
$ done
1
2
3
4
5
これも同様の結果を得る。
配列の要素は0からはじまる(cやjavaと同じ)
■豆知識
①まずは5つの変数に値を設定
str1=A
str2=B
str3=C
str4=D
str5=E
②変数を配列に格納
array=($str1 $str2 $str3 $str4 $str5)
③表示
$ for num in ${array[@]};do
$ echo ${num}
$ done
A
B
C
D
E
ここまでは問題ないが、、、、
もし①を下記のようにした場合
str1=A
str2=B
str3=
str4=D
str5=E
結果は以下のようになる
A
B
D
E
つまり配列は左詰めで格納されるということ。
仮にこんなロジックだと困ってしまう。
$ for num in ${array[@]};do
$ if [ "$num" = "" ];then #空白だった場合
$ echo "空白です。"
$ else
$ echo "値が入ってます。"
$ fi
$ done
値が入ってます。
値が入ってます。
値が入ってます。
値が入ってます。
空白です。
これ、3番目が空白なのに左詰にされたことで5番目が空白のように見える。
もし空白であるなしで処理を変えるようであれば、間違った処理をしてしまう。
もし結果を
値が入ってます。
値が入ってます。
空白です。
値が入ってます。
値が入ってます。
としたい場合には、
array=("$str1" "$str2" "$str3" "$str4" "$str5")
とダブルコート(")で囲ってあげましょう。
もし同じような利用を求める場合には、配列を利用すること
■配列の設定
array=(1 2 3 4 5)
■使用方法
$ for num in ${array[@]};do
$ echo ${num}
$ done
■結果
1
2
3
4
5
■+@として・・
$ array=(a b c d)
$ i=0
$ while [ $count -le 4 ];do
$ echo "${array[i]}"
$ i=`expr $i + 1`
$ done
1
2
3
4
5
これも同様の結果を得る。
配列の要素は0からはじまる(cやjavaと同じ)
■豆知識
①まずは5つの変数に値を設定
str1=A
str2=B
str3=C
str4=D
str5=E
②変数を配列に格納
array=($str1 $str2 $str3 $str4 $str5)
③表示
$ for num in ${array[@]};do
$ echo ${num}
$ done
A
B
C
D
E
ここまでは問題ないが、、、、
もし①を下記のようにした場合
str1=A
str2=B
str3=
str4=D
str5=E
結果は以下のようになる
A
B
D
E
つまり配列は左詰めで格納されるということ。
仮にこんなロジックだと困ってしまう。
$ for num in ${array[@]};do
$ if [ "$num" = "" ];then #空白だった場合
$ echo "空白です。"
$ else
$ echo "値が入ってます。"
$ fi
$ done
値が入ってます。
値が入ってます。
値が入ってます。
値が入ってます。
空白です。
これ、3番目が空白なのに左詰にされたことで5番目が空白のように見える。
もし空白であるなしで処理を変えるようであれば、間違った処理をしてしまう。
もし結果を
値が入ってます。
値が入ってます。
空白です。
値が入ってます。
値が入ってます。
としたい場合には、
array=("$str1" "$str2" "$str3" "$str4" "$str5")
とダブルコート(")で囲ってあげましょう。