쉘 인수를 문자열과 비교할 때 이 오류가 발생합니다. 코드가 다음과 같은 경우:
online=true
if [ "$2" -eq '-o' ]
then
online=false
fi
echo $online
그런 다음 입력 예를 들어 다음과 같은 결과를 얻습니다.
$ ./currency.sh 2 -o
./currency.sh: line 13: [: -o: integer expression expected
true
답변1
이 줄에서:
if [ "$2" -eq '-o' ]
-eq
두 번째 인수를 숫자로 사용하는 산술 연산자를 사용했습니다 .
물론 그 이유만으로 실패했습니다.
문자열을 비교할 때 다음을 사용할 수 있습니다.POSIX =
운영자:
if [ "$2" = '-o' ]
이 버전은 다음에 의해 생성되었으므로 모든 셸에서 작동해야 합니다.POSIX(휴대용 운영 체제 인터페이스).
네가 원한다면불다-특정 버전:
if [[ "$2" == '-o' ]]
이 버전은 다음에서만 작동합니다.Bash(Bourne Identity 쉘)그리고 유사합니다.
대조적으로, 이중 대괄호 [[ .. ]]
와 ==
연산자는 다음에 정의되어 있습니다.불다다른 쉘에서는 작동하지 않습니다.