![[ "$VAR" = "" ]와 [ -z "$VAR" ]는 항상 동일합니까?](https://linux55.com/image/68349/%5B%20%22%24VAR%22%20%3D%20%22%22%20%5D%EC%99%80%20%5B%20-z%20%22%24VAR%22%20%5D%EB%8A%94%20%ED%95%AD%EC%83%81%20%EB%8F%99%EC%9D%BC%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
내 코드는 다음과 같습니다
VAR=""
while [ -z "$VAR" ]; do
VAR=$( command | grep "important_string" )
done
command
그래서 나는 그것이 나타날 때까지 의 출력을 폴링 important_string
하고 그것을 에 넣기를 원합니다 $VAR
.
[ -z "$VAR" ]
와 사이에 기능적 차이가 있나요 [ "$VAR" = "" ]
?
답변1
예, ( [ -z "$VAR" ]
및 [ "$VAR" = "" ]
...)은 동일합니다. 둘 다 null 허용 여부를 테스트하고 있습니다 $VAR
(예: 바인딩 해제되거나 빈 문자열로 설정된 경우).
해설자로서세라다[ "$VAR" = "" ]
VAR
, if 가 유효한 테스트(예: if is )를 사용할 때 , 특히 (or )가 다음인 경우 VAR
나쁜 일이 발생할 수 있습니다.-z
[
test
아니요내장 쉘. 하지만 내장 된 기능이 있고 이것은 문제가 되지 않는 것 같습니다 bash
. 테스트 에 사용할 수 있습니다 . 바라보다zsh
[
[ "x$VAR" = "x" ]
테스트(1)
물론 POSIX 쉘이나 이와 유사한 것이 있다고 가정합니다.
아마도 -z
약간 더 빠를 수도 있고(그러나 쉘 스크립트에서는 마이크로초에 신경 쓰지 않아도 됨) =
더 읽기 쉬울 수도 있습니다.