命令:[ -z "" ] && echo 0 ||回声1

命令:[ -z "" ] && echo 0 ||回声1

运行[ -z "" ] && echo 0 || echo 1给出输出0。这个命令是什么?它是如何解释的?

答案1

在 bash(和类似的 shell)中,[ x ] && y || z是一种惯用的简写方式if [ x ] ; then y ; else z ; fi,wheny是一个简单的语句,不会/不能计算为false。当您不想浪费 5 行宝贵的屏幕/编辑器垂直空间来进行简单测试时,它非常有用。

我所说的“惯用”是指这是一种常见的 shell 编程实践。一种利用逻辑 AND ( &&) 和 OR ( ||) 在 shell 中工作的方式的方法。 如果为 true y则执行。如果为 false 则执行...问题是xzxzx如果为 true 则执行并y运行,但计算结果为 false(即返回非零退出代码) - 这就是为什么它应该不是如果有可能发生这种情况,请使用。例如[ -z "" ] && false || echo 1,即使条件-z ""为真,也会输出“1”。

换句话说,它(几乎)相当于:

if [ -z "" ] ; then
  echo 0
else
  echo 1
fi

这种完整形式的if; then ... ; else ... ; fi结构不存在与简写形式相同的缺陷。这种构造是正确的并且始终有效,而速记是一种快速而肮脏的技巧,在某些有限的情况下很有用。

-z测试字符串是否为空。

该命令的英文是:

如果空字符串为空则显示“0”,否则显示“1”。

它将始终显示“0”。

相关内容