2016-03-21 7 views
2

失敗したコマンドから終了コード "0"を返したいとします。これを行うのいずれかの簡単な方法はあります、というより:失敗したコマンドから終了コード0を返す方法

function a() { 
    ls aaaaa 2>&1; 
} 

if ! $(a); then 
    return 0 
else 
    return 5 
fi 
+0

「リターン! a ' – user000001

+0

コマンド置換の必要はありません。 a; then ... ' – andlrc

+0

'stderr'出力が' stdout'に書き出された場合、コマンド失敗の場合、スクリプトはコマンド出力を抑止してコマンド実行状況だけを取得することで避けることができる厄介なエラーを投げます'$?' – Inian

答えて

3

単に常に成功して終了する機能を強制的に関数にreturn 0を追加します。

function a() { 
    ls aaaaa 2>&1 
    return 0 
} 

a 
echo $? # prints 0 

あなたがコマンドに|| trueを追加することができます何らかの理由でインラインにそれを行いたい場合は:あなたは!

! ls aaaaa 2>&1 
echo $? # prints 0 

! ls /etc/resolv.conf 2>&1 
echo $? # prints 1 
で終了ステータスシンプルプリペンドにコマンドを反転したい場合

ls aaaaa 2>&1 || true 
echo $? # prints 0 

また、全体的に達成しようとしていることを述べると、より良い回答に導くことができます。

+0

ファイルが存在しない場合、 'ls /etc/resolv.conf 2>&1'はコンソールに醜いエラーを投げます:) – Inian

+0

。 '2>&1'を'>/dev/null'に置き換えることで出力を完全に抑えることができます。あるいはstderrのみを '2/dev/null'に置き換えることで抑止できます。 –