2016-09-30 3 views
0

を行います機能/ binに/ falseを私は混乱していたマイナスの影響

#!/bin/sh 
[ -f /etc/init.d/functions ] && . /etc/init.d/functions 

[ 0 -eq 0 ] && action "Test" /bin/false || action "Test" /bin/true 

echo "###############" 

[ 0 -eq 0 ] && action "Test" /bin/true || action "Test" /bin/false 

結果は次のとおりです。アクション/ binに/偽関数が作る偽の値を

Test              [FAILED] 
Test              [ OK ] 
############### 
Test              [ OK ] 

返しません後ろの声明||実行される? /bin/falseを "& &"ブロックに入れる必要がある場合、何をするか

答えて

1

を参照してください。 を効果的これは、このように振る舞う:

[ 0 -eq 0 ] && { action "Test" /bin/false || action "Test" /bin/true; } 

これはif/else/fiを使用して、右の動作を取得する理由の詳細です:

echo "###############" 
if [ 0 -eq 0 ]; then 
    action "Test" /bin/false 
else 
    action "Test" /bin/true 
fi 

この意志出力:

Test              [FAILED] 
1

/bin/falseはfalseを返すので、||そして真のリターン/ binに/

はこのようにそれを参照してください:

true && false || true -> true 
true && true || false -> true 

falseを返します場合は、期待どおり、

[ 0 -eq 0 ] && action "Test" /bin/false && action "Test" /bin/true 

を使用している場合は?

action "Test" /bin/false 

戻っ障害アクションとして実行する||後にコマンドを起こし1

は事はつまり、この

#!/bin/bash 
[ 1 = 1 ] && echo "displayed because previous statement is true" 

[ 1 = 0 ] && echo "not shown because previous statement is false" 

[ 1 = 1 ] || echo "not shown because previous statement is true" 

[ 1 = 0 ] || echo "displayed because previous statement is false" 
関連する問題