我正在开发一个shell脚本,下面的语法可以很好地工作:
if [[ 1 -eq 1 ]] ; then
[[ 2 -eq 1 ]]
else
echo hi
fi调试运行:
+ [[ 1 -eq 1 ]]
+ [[ 2 -eq 1 ]]如果我收缩语句,它会跳转到else条件:
**[[ 1 -eq 1 ]] && { [[ 2 -eq 1 ]] ; } || echo hi**调试运行:
+ [[ 1 -eq 1 ]]
+ [[ 2 -eq 1 ]]
+ echo hi
hi你知道遗漏了什么吗?
非常感谢。相同的
发布于 2018-06-26 22:05:23
你可以这样说:
[[ 1 -eq 1 ]] && { [[ 2 -eq 1 ]] ; true ; } || echo hi如果第一个测试通过,你进入{...}块,一旦你运行了你想要在其中运行的东西,通过以true结束,你不会继续通过这里的||来代替你的else子句。
问题是。[[ 2 -eq 1 ]]返回false,因此您可以在||之外访问您的echo hi。
所有这一切,你可能会看到它看起来有点丑陋,在这种情况下(特别是。因为涉及多个条件,这可能会影响如何评估您的流水线)。好吧,我建议不要省下几个换行符,为了让代码更明显和更易读,请使用较长的形式。
https://stackoverflow.com/questions/51043852
复制相似问题