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