我的代码看起来像这样:
VAR=""
while [ -z "$VAR" ]; do
VAR=$( command | grep "important_string" )
done
所以我想轮询 , 的输出command
,直到important_string
出现并放入$VAR
.
[ -z "$VAR" ]
和之间有功能区别吗[ "$VAR" = "" ]
?
答案1
是的,它们([ -z "$VAR" ]
和[ "$VAR" = "" ]
...)是等价的。两者都在测试 的空性$VAR
(例如,当它未绑定或设置为空字符串时)。
正如评论者塞拉达[ "$VAR" = "" ]
,当使用ifVAR
是一些有效的测试(例如 if VAR
is )时,可能会发生不好的事情-z
,特别是当[
(or test
) 是不是一个内置的 shell。但 onbash
或zsh
the[
是内置函数,这似乎不是问题。您可以用于[ "x$VAR" = "x" ]
您的测试。看测试(1)
当然,我假设有一些 POSIX shell 或类似的东西。
也许-z
可能会稍微快一些(但您不应该关心 shell 脚本中的微秒),并且您可能会发现它=
可能更具可读性。