의 약자! -지

의 약자! -지

대안을 찾고 있습니다:

local foo=""

if [[ ! -z "$foo" ]]; then
  echo "foo is actually not empty."
fi

부정 없이 변수가 정의되었는지(비어 있지 않은지) 확인하는 방법이 있습니까?

답변1

is의 반대이거나 단순히 연산자를 사용하지 않는 것입니다.-z word-n wordword

foo=x
if [[ "$foo" ]] ; then
    echo "foo is not empty"
fi

이 방법으로는 null 값과 설정되지 않은 값 사이를 테스트할 수 없습니다. 당신에게 필요한 것은 ${foo+x}: [[ "${foo+x}" = x ]] 어떤 경우에도놓다값, 심지어 빈 문자열까지.

-z, -n표준 테스트에도 사용할 수 있지만 [ .. ]필요하지 않습니다 [[ .. ]]. 여기서 차이점은 내부 [ .. ]변수를 인용해야 한다는 것입니다.

답변2

var=''
var2='foo'
e () { test ${#1} -gt 0; }
e "$var" && echo true || echo false
    false
e "$var2" && echo true || echo false
    true

관련 정보