分岐
if [ 条件 ] ; then
fi
if [ 条件 ] ; then
else
fi
if [ 条件 ] ; then
elif [ 条件 ] ; then
fi
declare -i i=0
while [ $i -lt 5]; do
#処理
let ++i
donefor 文
declare -i i
for ((i=0; $i < 5 ; ++i)); do
donefor each 文
for field in "${fields[@]}";do
doneif 文をシンプルに
command ...
if [ $? -ne 0 ]
then
echo ...
exit 1
fi
みたいに書くと、コードが見づらいのでなんとかならないかと思っていたら、
command ... || { echo ... ; exit 1 ; }
こういう風に書けるのか。
Perl の「or die」みたい。ってか Perl のほうが新しいと思うけど。
command ... || echo ... ; exit 1
のように書くと exit が実行されないので要注意。って bashクックブック に書かれてました。{ echo … ; exit 1 ;} と最後の「;」を忘れないように。でないと if 文全体がエラーになる。
ループ
for ループの基本
for i in 1 2 3 4 5 6 7 8 9 10; do
echo $i
doneseq を使った C 風ループ
for i in `seq 1 10`; do
echo $i
doneseq が使えない場合は,こんなやりかたもある.
for i in `yes ""|cat -n|head -10`; do
echo $i
donebash 3 以降だと,echo {1..10} という zsh のような書き方ができるので,次のようなのもあり.
bash 3 以降で使えるループ
for i in {1..10}; do
echo $i
doneただし,echo {01..10}を展開すると,zsh の場合は,“01 02 03 … 09 10”になるのに対して,bash の場合は,“1 2 3 … 9 10”になる点が違う.