이 스크립트의 출력은 무엇입니까?

이 스크립트의 출력은 무엇입니까?
q=3
while q = 3
 do
  echo blah
  q=‘expr $q + 1‘
 done

시험을 준비하고 있었는데 갑자기 이런 문제가 발생했습니다. 출력이 어떻게 되는지 헷갈리네요.

출력이 잘못될 것 같아요. 그 이유는 "while q = 3"을 "while q -eq 3"으로 변경해야 하기 때문입니다.

누군가가 나에게 이 코드를 잘 설명해 준다면 큰 도움이 될 것입니다.

감사해요.

답변1

while q = 3

무의미한. 어쩌면 당신의 목적은 q가 3인지 확인하는 것일 수도 있습니다. 그럼 넌 이렇게 해야 해

while [ "$q" -eq 3 ] # or better while (( q == 3 )). See [1]

또한 참고하시기 바랍니다

 while q=3 #No spaces around = during assignment.
 do
 #stuff
 done

문법적으로는 맞지만 논리적으로는 틀립니다.

또한 참고하시기 바랍니다

 q=‘expr $q + 1‘ # that should have been backticks ` instead of single quote '

q=`expr $q + 1`

올바른 사용법이다

어쩌면 많은 쉘이 이제 이러한 구조를 지원할 수도 있습니다.

(( q++ )) # same effect as  q=`expr $q + 1`

[1](( ))설정되지 않은 경우 를 0으로 대체하여 처리합니다.q

관련 정보