Bashで素数を印刷する[閉じる]

Bashで素数を印刷する[閉じる]

こんにちは。私はプログラミングが初めてで、現在bashスクリプトを学んでいます。このエラー "Line 28: Expected `)""について助けてください。

以下に私のプログラムを示します。

read -p "enter the number:" a
while [[ $a -le 100 ]]
do
echo "$a"
if [[ (($a-1) % 2) -eq 0 ]]
then
((a++))
fi
done

答え1

bashは算術評価を使用するため、$(( ... ))テストには次のものが必要です。

if [[ $((($a-1) % 2)) -eq 0 ]]; then ...

ただし、変数の拡張は算術的文脈では暗黙的であるため、次のように書くことができます。

if [[ $(((a-1) % 2)) -eq 0 ]]; then ...

しかし、、算術式の状態を直接使用できるため、実際に外部テスト括弧は必要ありません。

if (( (a-1) % 2 == 0 )); then ...

関連情報