双管道后Bash中冒号的含义

aa0*_*007 7 bash

我试图理解这段代码:

. functions.sh || { : ; echo "Error while loading the specified file" >&2; exit 2; }
Run Code Online (Sandbox Code Playgroud)

我知道当指定的文件不可用时,会调用括号中的代码.但这: ;意味着什么?此外,当您删除它时,脚本不起作用.

unw*_*ind 17

结肠是空语句,所以它什么都不做.分号结束命令列表.

不知道为什么有人会写上面的内容,它基本上是"什么都不做,然后做echo",这似乎可以简化.可能是某人的复制粘贴行李.

  • `do_something || :`是一个成语,意思是忽略`do_something`的失败,如果启用了'set -e`AKA`set -o errexit`,它将结束整个脚本. (13认同)
  • 没关系.. 我忘了在 { 符号后添加一个空格。非常感谢!:) (2认同)
  • 要添加到Martin的评论中,其他人可能不理解`cmd || :`idiom,而不是用日志消息替换`:`,将它保存在一个新的命令组中. (2认同)