1から50までの数字を印刷してください

1から50までの数字を印刷してください
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これらのコマンドがあります。代替方法は次awkbcとおりです。

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

答え4

というソフトウェアがあります。BASHデバッガ他のソフトウェアは住宅検査これにより一般的なエラーが発生しますが、すべてではありません。

スクリプトの5行目に角括弧を使用してください。

x=$[ $x + 1 ]

修正する

または

x=$(( $x + 1 ))

前者は廃止され、後者を使用する方が良いです。記号の前に現れる$前には使用しないでください。x=

関連情報