bash shell - 如何在没有“语法错误:预期操作数”的情况下执行嵌套循环

bash shell - 如何在没有“语法错误:预期操作数”的情况下执行嵌套循环

我在尝试

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}'

请注意,扩展并未发生。通读链接的重复项以确定如何修复它。

相关内容