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

확장은 발생하지 않습니다. 문제를 해결하는 방법을 결정하려면 연결된 사본을 읽어보세요.

관련 정보