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

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

내가 읽어보니,

test -n $string==> 종료 상태는 0 $string인 경우null이 아님, 그렇지 않으면 1개

그리고

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

하지만 이 특정 예에서는(널 문자열을 생성하려고 시도했지만) 뭔가 빠진 것 같습니다.

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

이것의 출력은 다음과 같습니다:

0
0

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

이 이상한 행동에 대해 설명해줄 수 있는 사람이 있나요?

답변1

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

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

관련 정보