Bash中逻辑或(| |)后跟冒号
我知道操作符Bash中逻辑或(| |)后跟冒号,bash,Bash,我知道操作符&&和|在Bash中做什么 但最近我在一个shell脚本中遇到了以下情况: [[ test1 ]] && { test2 } || : 我不明白上面语句中的|:(逻辑或后跟:)是什么意思 谁能详细说明一下吗?一步一个脚印: :是一个shell内置程序,基本上相当于true命令。如果你感兴趣,这里有一个很好的描述它的历史和它是如何工作的 [[test1]]测试是否存在test1。(通常,这是一个变量。) {test2}在当前shell环境中执行test2。(通常,这
&&
和|
在Bash中做什么
但最近我在一个shell脚本中遇到了以下情况:
[[ test1 ]] && { test2 } || :
我不明白上面语句中的|:
(逻辑或后跟:
)是什么意思
谁能详细说明一下吗?一步一个脚印:
是一个shell内置程序,基本上相当于:
命令。如果你感兴趣,这里有一个很好的描述它的历史和它是如何工作的true
测试是否存在[[test1]]
。(通常,这是一个变量。)test1
在当前shell环境中执行{test2}
。(通常,这是以换行符或分号结尾的命令列表。)test2
的优先级高于&&
。因此,|
将在[[test1]]和&&{test2}
之前进行评估|
[[ test1 ]] && { test2 } || :
指:
- 如果存在
,则执行test1
test2
- 如果
不存在,或者test1
失败,则返回test2
(即:true
)$?==0
- 返回的退出代码(
)与“不返回错误”不同!如果$?
失败,您可能仍然会在脚本输出中看到错误,但整个命令的退出代码将始终为test2
true
- 如果在
下执行脚本,则执行set-e
test2时出错将不会终止脚本
cmd | |:
是一种忽略由cmd
引起的错误的方法。如果使用set-e
执行脚本,并且您不希望在cmd
失败时脚本被中断,则此选项非常有用。,因此command | |:
只是一种“忽略”可能失败的命令的方法。特别适用于set-e
。