是否有某种方法可以在shell中为一些可能的值分配一个值,如下所示:
variable = $(command1) or $(command2)
知道这两个命令中只有一个给出结果
答案 0 :(得分:2)
||如果command1返回非零(错误)返回码,operator将评估command2。
variable=$(command1 || command2)
同样,&&如果command1返回(ok)零返回码,运算符将评估command2。
variable=$(command1 && command2)
e.g。变量的分配:
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
答案 1 :(得分:1)
你可以这样做:
variable=$(command1 2>/dev/null || command2 2>/dev/null)
如果成功,则会将command1
的输出分配给variable
,否则会分配command2
的输出。
2>/dev/null
会抑制stderr。