( test -n $st ) != ( test -z $st ) 그렇죠?

( test -n $st ) != ( test -z $st ) 그렇죠?

내가 읽을 때,

test -n $string$string==> 그렇다면 종료 상태는 0입니다.null이 아님, 그렇지 않으면 1개

그리고

test -z $string==> 종료 상태는 0인 경우$string 공백, 그렇지 않으면 1개

하지만 이 특정 예에서는 (빈 문자열을 만들려고 합니다) 뭔가 빠진 것 같습니다.

#!/bin/sh
str=""
test -n $str
echo $?
test -z $str
echo $?

출력은 다음과 같습니다.

0
0

여기에 이미지 설명을 입력하세요.

이 이상한 행동을 설명할 수 있는 사람이 있나요?

답변1

$str큰따옴표 안에 넣어주세요 !

-n 테스트에서는 문자열을 테스트 괄호 안에 배치해야 합니다. !-z와 함께 인용되지 않은 문자열을 사용하거나 심지어 괄호 안에 인용되지 않은 문자열을 테스트하는 것(예제 7-6 참조)도 일반적으로 작동하지만 이는 안전하지 않은 방법입니다. 항상 테스트된 문자열을 인용하십시오.기타 비교 연산자

관련 정보