#!/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 ]