[: expr: 예상치 못한 연산자

[: expr: 예상치 못한 연산자

쉘 스크립팅을 배우기 위해 Edureka 비디오를 팔로우하고 있는데 문제가 발생했습니다.

강사가 처음에 했던 이 간단한 스크립트를 실행했는데 모든 것이 잘 작동했지만 지금은 실행할 수 없습니다.

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
        echo $a
        a=' expr $a + 1'
done

정말 이상해요. 처음에는 작동했지만 그 이후로 예상치 못한 연산자 또는 인수가 너무 많은 등 두 가지 오류가 발생했습니다. 나는 전체 내용을 처음부터 네 번 다시 작성해 보았지만 처음에 작동했던 부분을 제외하고는 동일했습니다.

나는 이것이 sh 대 bash의 구문과 관련이 있을 수 있다는 것을 온라인에서 읽었지만 shebang을 bash로 변경하고 bash로 실행해도 변경되지 않았습니다.

내가 뭘 잘못하고 있는지 아는 사람 있나요?

그런데 KDE Neon에서 실행 중입니다.

PS 지금은 이렇네요


#!/bin/sh

a=0
while [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

답변1

문제는 라인에 있습니다

a=' expr $a + 1'

읽어야 해

a=`expr $a + 1`

백틱 문자에 특히 주의하세요. 이는 쉘에 명령을 실행하고 변수를 출력으로 설정하도록 지시합니다.

이 줄에 오류 메시지가 나타나는 이유는 [다음과 같습니다.두번째루프 주위의 시간은 $a오류로 인해 리터럴 문자열 expr $a + 1이며 이는 유효한 표현식이 아닙니다.

관련 정보