![의 약자! -지](https://linux55.com/image/132901/%EC%9D%98%20%EC%95%BD%EC%9E%90!%20-%EC%A7%80.png)
대안을 찾고 있습니다:
local foo=""
if [[ ! -z "$foo" ]]; then
echo "foo is actually not empty."
fi
부정 없이 변수가 정의되었는지(비어 있지 않은지) 확인하는 방법이 있습니까?
답변1
is의 반대이거나 단순히 연산자를 사용하지 않는 것입니다.-z word
-n word
word
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