시도 expr
이후의 모든 +1
를 + 1
로 변경합니다.
공백이 없으면 expr
는 오류를 반환하고 $temp
는 비어 있습니다. $temp
가 비어 있으면 -lt
가 공백을 숫자와 비교하므로 오류가 나타납니다. 다음은 문제를 재현하는 하나의 라이너입니다.
t=0;t=`expr $t +1`;[ $t -lt 25 ]
출력 (STDERR로) :
expr: syntax error bash: [: -lt: unary operator expected
더 나은 방법은 외부 유틸리티 expr
를 사용하는 모든 코드를 변경하여 쉘 자체 내부 산술 확장을 사용하는 것입니다. 따라서 다음과 같이 코드를 작성하십시오.
temp=`expr $temp +1`
… 다음으로 변경해야합니다.
temp=$(($temp + 1))
또는 bash
에서 전체 줄을 다음으로 대체 할 수 있습니다.
((temp++))