Shell 在贝壳里是什么意思?

Shell 在贝壳里是什么意思?,shell,Shell,我正在看一个shell脚本代码,我不知道双管道(| |)后跟冒号(:)的目的是什么,有人能解释一下吗?e、 g $ <some_command> >/dev/null 2>&1 || : $>/dev/null 2>&1| |是布尔或 :是一个不执行任何操作的命令,它不执行任何操作,并以真实状态退出 所以,anything | |:无条件返回true 因此,一些可能失败的命令:总是会成功的 如果使用了set-e或错误陷阱,但您不希望脚本在命令失败时退出或引

我正在看一个shell脚本代码,我不知道双管道(| |)后跟冒号(:)的目的是什么,有人能解释一下吗?e、 g

   $ <some_command> >/dev/null 2>&1 || :
$>/dev/null 2>&1|

|
是布尔或

是一个不执行任何操作的命令,它不执行任何操作,并以真实状态退出

所以,
anything | |:
无条件返回true

因此,
一些可能失败的命令:
总是会成功的


如果使用了
set-e
或错误陷阱,但您不希望脚本在命令失败时退出或引发错误,这一点很重要。

:冒号是noop,双管是or操作,因此

执行某个_命令或(如果某个_命令失败)执行:(这是no操作)


||表示仅当第一个命令失败时才执行第二个命令。在这种情况下,第二个命令代表“什么都不做”

Wow,因此这应该被禁止:)这比空的try-catch块更糟糕。谢谢为什么禁止?有时,您真的不在乎命令是否失败。例如,<代码> GRP如果找不到匹配失败,但您可能不认为脚本中有一个故障,所以<代码> GRUP String FIL.TXT*>:会阻止脚本退出。@ Maxelor,我不会说得更糟——它是逐行的非常明确的,有时它是被调用的。如果你已经在错误处理代码中,有时你真的想/需要失败,如果部分失败,继续清理。谢谢大家,我只是在开玩笑。每个人都有权根据自己的目标使用自己的代码做任何事情,尽管我相信,对于我在这里看到的情况(部署失败时压缩日志的命令),我不确定我是否100%同意这种方法。我的意思是,zip命令经常失败吗?:)zip肯定会失败。文件可以从其下移出,文件可以在其下被截断、调整大小或删除,其目标可能会耗尽空间。。。如果这个脚本在源代码管理中,我建议查看是谁在何时更改了它,以及他们在更改中附加了什么标签。如果这是为了在zip运行时logrotate启动时使故障静音。。。好吧,这不会是一个巨大的惊喜。不完全是“什么都不做”:将退出状态设置为“真”