bashシェル - 「構文エラー:オペランドが予想されていない」なしでネストされたループを実行する方法

bashシェル - 「構文エラー:オペランドが予想されていない」なしでネストされたループを実行する方法

頑張ってる

for i in {4..100}
do
  is_prime=true
  a=$(($i-1))
  for divider in {2..$a}
  do  
    b=$(($i % $divider)) # <-- line 9
    [ $b -eq 0 ] && echo 'y' #is_prime=false
  done
  [ is_prime == true ] && print "${i} is prime!"
done

しかし、私は理解しています

$ ./3_largest_prime.sh 
./3_largest_prime.sh: line 9: 4 % {2..3}: syntax error: operand expected
(error token is "{2..3}")

答え1

入れたら

set -xv  

スクリプトでエラーの原因を検出できます。

スクリプトは次の行を出力します。

+for divider in '{2..$a}'

拡張は発生しません。問題を解決する方法を決定するには、リンクされたコピーをお読みください。

関連情報