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