有没有办法从shell中的一些可能值中分配一个值,如下所示:
variable = $(command1) or $(command2)
知道这两个命令中只有一个会给出结果
如果 command1 返回非零(错误)返回代码,则 || 运算符将计算 command2
。variable=$(command1 || command2)
同样,如果 command1 返回(确定)零返回代码,&运算符将计算 command2。
variable=$(command1 && command2)
例如,变量的赋值:
var=$(ls zasdasd || echo "file does not exist")
echo $var ## outputs "file does not exist"
通过将错误流 2 定向到/dev/null
,可以抑制错误输出
var=$(ls zasdasd || echo "file does not exist") 2>/dev/null
你可以做:
variable=$(command1 2>/dev/null || command2 2>/dev/null)
如果成功,这会将command1
的输出分配给variable
,否则它将分配来自command2
的输出。
2>/dev/null
可以抑制 stderr,以防任何命令失败。