2016-03-21 145 views
2

我想從失敗的命令返回退出代碼「0」。是否有這樣做,而不是任何更簡單的方法:如何從失敗的命令返回退出代碼0

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

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

'返回!一個' – user000001

+0

不需要命令替換簡單使用'if!一個;那麼......' – 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 || true 
echo $? # prints 0 

如果你想與!

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

! ls /etc/resolv.conf 2>&1 
echo $? # prints 1 
反轉退出狀態簡單前插命令

此外,如果你陳述你正在努力實現的整體,我們可能能夠指導你更好的答案。

+0

如果文件不存在'LS的/etc/resolv.conf 2>&1'將拋出一個醜陋的錯誤控制檯:) – Inian

+0

它將。通過用'&>/dev/null'或stderr替換'2>&1',可以完全抑制輸出,只能通過用'2>/dev/null'替代它來抑制。 –

相關問題