关于条件句的问题
我怎样才能编写一个 POSIX shell 脚本来做两件事:
1)当 $var1 或 $var2 被定义且非空时,回显“成功”
2)当 $var3 被定义为任何内容时, echo "success2"
我尝试了 -ne -z 和 -a 运算符的许多组合,但我没有运气。
How can I write a POSIX shell script that does two things:
1) When $var1 OR $var2 is defined AND non-null, echo "success"
2) When $var3 is defined with anything, echo "success2"
I tried many combinations of the -ne -z and -a operators but I've had no luck.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
(我在 POSIX 模式下的 Bash shell 中测试了以下内容 - 我不确定所有这些都是严格的 POSIX)
第一个条件
[ -n "$var1" -o -n "$var2" ] 利用了非空要求也意味着已设置变量这一事实。
第二种情况比较棘手。
“${var3+X}”
扩展 为空;如果设置,则扩展为X
。这样你就可以区分 unset 和 null 变量。(I tested the following in a Bash shell in POSIX mode - I am not absolutely certain that all of it is strictly POSIX)
The first condition
[ -n "$var1" -o -n "$var2" ]
takes advantage of the fact that the not-null requirement also implies that the variable are set.The second case is trickier.
"${var3+X}"
expands to nothing ifvar3
is unset and toX
if it is set. That way you can tell unset and null variables apart.