내 코드는 다음과 같습니다
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
약간 더 빠를 수도 있고(그러나 쉘 스크립트에서는 마이크로초에 신경 쓰지 않아도 됨) =
더 읽기 쉬울 수도 있습니다.