문자열을 비교할 때 다음을 사용할 수 있습니다.POSIX =운영자:

문자열을 비교할 때 다음을 사용할 수 있습니다.POSIX =운영자:

쉘 인수를 문자열과 비교할 때 이 오류가 발생합니다. 코드가 다음과 같은 경우:

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 쉘)그리고 유사합니다.


대조적으로, 이중 대괄호 [[ .. ]]==연산자는 다음에 정의되어 있습니다.불다다른 쉘에서는 작동하지 않습니다.

관련 정보