!["예상되는 정수 표현식"을 얻었는데 그 이유를 모르겠습니다. [닫음]](https://linux55.com/image/188026/%22%EC%98%88%EC%83%81%EB%90%98%EB%8A%94%20%EC%A0%95%EC%88%98%20%ED%91%9C%ED%98%84%EC%8B%9D%22%EC%9D%84%20%EC%96%BB%EC%97%88%EB%8A%94%EB%8D%B0%20%EA%B7%B8%20%EC%9D%B4%EC%9C%A0%EB%A5%BC%20%EB%AA%A8%EB%A5%B4%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%5B%EB%8B%AB%EC%9D%8C%5D.png)
#!/usr/bin/bash
for (( i=0; i<=10; i++ ))
do
if [ "$i" -eq 3 ] || [ "$1" -eq 7 ]
then
continue
fi
echo "$i"
done
이것을 실행할 때 나는 얻는다.
file: line 4: [: : integer expression expected
0
file: line 4: [: : integer expression expected
1
file: line 4: [: : integer expression expected
2
file: line 4: [: : integer expression expected
4
file: line 4: [: : integer expression expected
5
file: line 4: [: : integer expression expected
6
file: line 4: [: : integer expression expected
7
file: line 4: [: : integer expression expected
8
file: line 4: [: : integer expression expected
9
file: line 4: [: : integer expression expected
10
...이유를 모르겠습니다.
답변1
인수 없이 스크립트를 호출하는 경우 명령은 다음과 같습니다.
[ "$1" -eq 7 ]
다음과 같이 평가됩니다.
[ "" -eq 7 ]
이는 숫자 연산자와 마찬가지로 오류입니다 -eq
. 피연산자로 두 개의 정수가 필요합니다. 빈 문자열은 정수가 아닙니다.
인수를 사용하여 스크립트를 호출하지 않고 i
대신 의 값을 비교하려는 경우 7
다음을 수행할 수 있습니다.
[ "$i" -eq 7 ]
대신에:
[ "$1" -eq 7 ]