![문자열을 비교할 때 다음을 사용할 수 있습니다.POSIX =운영자:](https://linux55.com/image/129869/%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EB%B9%84%EA%B5%90%ED%95%A0%20%EB%95%8C%20%EB%8B%A4%EC%9D%8C%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.POSIX%20%3D%EC%9A%B4%EC%98%81%EC%9E%90%3A.png)
쉘 인수를 문자열과 비교할 때 이 오류가 발생합니다. 코드가 다음과 같은 경우:
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 쉘)그리고 유사합니다.
대조적으로, 이중 대괄호 [[ .. ]]
와 ==
연산자는 다음에 정의되어 있습니다.불다다른 쉘에서는 작동하지 않습니다.