我遇到了这样的 if/then 语句:
if ! foo ; then
echo "blah"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
具体if !
是什么意思?“如果结果foo
不是真的?” “如果退出代码foo
不是 0”?
只是为了添加其他答案,该代码用于!
避免编写这样的代码:
if foo ; then
# everything that used to follow "fi" in the previous version
else
echo "blah"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
这仅在脚本中的之后有内容时才有效fi
,因为空if
子句是不合法的。(评论不算数。)
以这种方式编写它会花费您一个缩进级别,核心结构化编程人员会告诉您这是值得付出的代价。这所软件开发流派说,exit
程序中间的 几乎不比 好goto end
,而且由于goto
是一个不折不扣的邪恶,额外的嵌套级别是一种改进。
一所竞争学校说,“是的,缩进很棒,直到你把所有的代码都从屏幕的右侧推开。”
然后你会看到那些认为两个阵营都有点疯子的人,并简单地观察到,在可能的情况下最好避免否定逻辑,并且正常情况应该是第一个,例外情况在程序结束时关闭。
选择你的 kool-aid 并喝它。