x=1
while [ $x -le 50 ]
do
echo $x
$x=(($x + 1))
done
上記のコードを書きました。これは多くのプログラミング言語で簡単な作業のように見えますが、私にはこのエラーが発生しました。
solution.sh: line 5: syntax error near unexpected token `('
solution.sh: line 5: ` $x=(($x + 1))'
Bashでエラーをデバッグする方法。 IDEはありますか?
答え1
シェルは(良い)プログラミング言語ではなく、(何よりも)コマンドラインソルバーです。計算するには、echo
ループ内およびコマンドの代わりにcountコマンドを使用します。[
たとえば、GNUシステムにはseq
これらのコマンドがあります。代替方法は次awk
のbc
とおりです。
seq 50
echo 'for (i=1; i<=50; i++) i' | bc
awk 'BEGIN {for (i=1; i<= 50; i++) print i}'
シェルでループを使用している場合は、おそらく間違った方法で実行しています。
答え2
1から50までの数字を印刷してください
printf '%s\n' {1..50}
1〜50の数字を2段階で印刷します(bash 4+):
printf '%s\n' {1..50..2}
答え3
行5:$x=(($x + 1))
に変更しますx=$(($x + 1))
。
ただ使用してもいいですseq 1 50
。
その場合は、2がステップ/増分を意味する場合をx=$(($x + 2))
使用できます。seq 1 2 50