2011-11-14 17 views

回答

3

你可以叫他们不管,并捕获返回值:

function validateA() { 
    echo "A [fail]" 
    return 1 
} 

function validateB() { 
    echo "B [ok]" 
    return 0 
} 

validateA ; vA=$? 
validateB ; vB=$? 

if [[ $vA -ne 0 || $vB -ne 0 ]] ; then 
    echo "validation [fail]" 
    exit 1 
else 
    echo "validation [ok]" 
    exit 0 
fi 

此输出:

A [fail] 
B [ok] 
validation [fail] 
1

我想到的第一个想法就是一致地调用每个函数,保存返回值并在以后进行分析。就像这样:

validateA 
a_retval=$? 

validateB 
b_retval=$? 

if [ $a_retval -ne 0 -o $b_retval -ne 0 ]; then 
    echo "validation [fail]" 
    exit 1 
else 
    echo "validation [ok]" 
    exit 0 
fi 
2

我有同样的问题,并最终做这样的事情:

rc=0 
if ! validateA ; then rc=1; fi 
if ! validateB ; then rc=1; fi 
return $rc 

这是相同的原则,其他的答案,但更浓缩的语法。