쉘에 비어 있지 않은 문자열이 있는지 확인하십시오(!-z 아님).

쉘에 비어 있지 않은 문자열이 있는지 확인하십시오(!-z 아님).

나는 이것을 할 수 있는 방법이 있다는 것을 알고 있지만, 인터넷 검색은 항상 끔찍한 결과를 낳습니다.

나하고 싶어:

if [[ ! -z "$var" ]]; then
   # ....
fi

하지만 지금은 기억이 나지 않습니다. 다음과 같은 것 같아요.

if [[ -p "$var" ]]; then
   # ....
fi

또는 다음과 같습니다:

if [[ -n "$var" ]]; then
   # ....
fi

누구든지 검색 엔진에 표시될 좋은 답변을 제공할 수 있습니까? 제목을 최적으로 편집하면 도움이 되기를 바랍니다.

답변1

-n테스트("주어진 문자열의 길이가 0이면 true")와 반대로 테스트 -z("주어진 문자열의 길이가 0이 아니면 true")를 수행 해야 합니다 .

테스트 -p는 완전히 다릅니다("주어진 파일이 존재하고 명명된 파이프인 경우 true").

bash대화형 셸에 다음을 입력하여 이 정보를 얻을 수 있습니다.

help test

test그러면 내장 유틸리티에 대한 문서가 제공됩니다 (이것은 [; see 의 또 다른 변형이며 ; see help [[[동일한 테스트를 사용합니다 help [[). 또한 "라는 제목의 문서에 설명되어 있는 bash시스템 설명서( )를 볼 수도 있습니다 .man bash조건식".

따라서 귀하의 코드는 다음 중 하나가 될 것입니다

if [[ -n $var ]]; then ...; fi
if [ -n "$var" ]; then ...; fi
if test -n "$var"; then ...; fi

그렇게 말하면 별 문제 없을 것 같은데.

if [[ ! -z $var ]]; then ...; fi

예를 들어 값이 비어 있는지 확인하고 값이 비어 있지 않으면 오류 메시지를 출력하려는 ​​경우입니다. 그러면 코드는 다음과 같은 의도를 기록합니다.비어 있지 않음, 뭔가 문제가 있습니다”.

관련 정보