bash: 테스트: 아니오: 정수 표현식이 필요합니다.

bash: 테스트: 아니오: 정수 표현식이 필요합니다.

나는 이 줄을 믿는다

if test "$suman_inspect" -eq "yes"; then

이 오류가 발생합니다(축어적으로):

bash: test: no: integer expression expected

test온라인에서 이 예를 봤기 때문에 위의 표현식을 공식화했습니다 .

 if test "$#" -eq "0"; then

매개변수 배열의 길이가 0인지 확인하는 테스트입니다.

그럼 이 두 가지 검사에 문제가 있는 걸까요? 첫 번째는 작동하지만 두 번째는 작동하지 않는다는 것을 잘 모르겠습니다.

답변1

이는 -eq정수 비교를 위한 것입니다. 문자열 비교의 경우 ==(또는=). 따라서 다음을 사용해야 합니다.

if test "$suman_inspect" == "yes"; then
    # do something
fi

불평등 연산자에도 동일한 구별이 적용됩니다( -gt, -lt, -ge, -le및 는 -ne숫자 비교에 사용되고 , >, 및 <는 문자열 비교에 사용됩니다).>=<=!=

둘 다 ; [ expression ]대신 사용할 수도 있습니다.test expression동의어.

관련 정보