"예상되는 정수 표현식"을 얻었는데 그 이유를 모르겠습니다. [닫음]

"예상되는 정수 표현식"을 얻었는데 그 이유를 모르겠습니다. [닫음]
#!/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 ]

관련 정보