bash에서는 [[ $variable ]]
와 [[ -n $variable ]]
정확히 동일합니까? 아래 출력의 경우인 것 같지만 쉘 스크립트에서는 두 가지 사용 형태가 모두 널리 사용되는 것으로 나타났습니다.
$ z="abra"
$ [[ $z ]]
$ echo $?
0
$ [[ -n $z ]]
$ echo $?
0
$ z=""
$ [[ $z ]]
$ echo $?
1
$ [[ -n $z ]]
$ echo $?
1
$ unset z
$ [[ $z ]]
$ echo $?
1
$ [[ -n $z ]]
$ echo $?
1
답변1
[ "$var" ]
[ -n "$var" ]
현재 bash 및 대부분의 쉘 과 동일합니다 . 다른 오래된 쉘에서는 동일하지만다양한 오류로 고통받다예를 들어 "$var"의 일부 특수 값의 경우 =
또는 .(
!
더욱 선명하게 발견한 것은 [ -n "$var" ]
펜던트였습니다 [ -z "$var" ]
.
[[ -n $var ]]
[[ $var ]]
비표준 ksh 구문을 구현하는 모든 쉘과 동일합니다.
test "x$var" != x
아주 오래된 쉘로 포팅하려는 경우 가장 신뢰할 수 있는 방법입니다.
답변2
~에 따르면Bash에서 길이가 0이 아닌 문자열을 테스트합니다. [ -n “$var” ] 또는 [ “$var” ], 예, 동일합니다.
변수 이름을 인용하더라도 동일합니다.
중요 사항: 제가 인용한 질문 이름은 에만 언급되어 있지만 답변은 두 가지를 모두 [
고려한 것입니다 .[
[[