forループとifを使って簡単なプログラムを作成する方法。
私のコード:
for i in mon tue wed thurs fri sat
do
echo weekday: $i
if [ $i == thurs ]
then
echo weekend: $i+1
fi
done
そして出力:
weekday: mon
weekday: tue
weekday: wed
weekday: thurs
weekend: thurs+1
weekday: fri
weekday: sat
しかし、私は次のような出力が欲しいです。
weekday: mon
weekday: tue
weekday: wed
weekday: thurs
weekend: fri
weekend: sat
どのような構文を見逃しましたか?
答え1
与えられたコード:
for i in mon tue wed thurs fri sat
do
echo weekday: $i
if [ $i == thurs ]
then
echo weekend: $i+1
fi
done
echo weekday: $i
繰り返しごとに呼び出されます。- ループが繰り返されるたびに、変数
for
に要素が生成されます。予想される配列インデックスではありません。i
i
予想される出力を取得するさまざまな方法:
1) 文字列比較の実行
for i in mon tue wed thurs fri sat
do
if [ $i == fri ] || [ $i == sat ]
then
echo weekend: $i
else
echo weekday: $i
fi
done
2)文字列を使用してプレフィックスを保存し、条件に応じて変更します。
s='weekday'
for i in mon tue wed thurs fri sat
do
echo "$s: $i"
if [ $i == thurs ]
then
s='weekend'
fi
done
3) 配列の使用
days=(mon tue wed thurs fri sat)
for ((i=0; i<${#days[@]}; i++))
do
if (( i < 4 ))
then
echo "weekday: ${days[$i]}"
else
echo "weekend: ${days[$i]}"
fi
done