2014-02-12 21 views
1

有一些方法,以一个值赋给了一些可能的值的外壳是这样的:多个可能值

variable = $(command1) or $(command2) 

知道,只有这两个命令的人给结果

回答

2

||如果command1返回非零(错误)返回码,运算符将评估command2。

variable=$(command1 || command2) 

同样,在command1返回(OK)归零码& &运营商将评估命令2。

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 
1

可以执行:

variable=$(command1 2>/dev/null || command2 2>/dev/null) 

这将分配的command1输出到variable如果它是成功的,否则它会分配从command2输出。

2>/dev/null是否有抑制stderr的情况下,任何命令失败。