1
2
3
4
5
6
<code>#!/bin/bash</code>
<code>set</code> <code>-e</code>
<code>command</code> <code>1</code>
<code>command</code> <code>2</code>
<code>...</code>
<code>exit</code> <code>0</code>
----------------------------------------------------------
Every script you write should include set -e at the top. This tells bash that it should exit the script if any statement returns a non-true return value. The benefit of using -e is that it prevents errors snowballing into serious issues when they could have been caught earlier. Again, for readability you may want to use set -o errexit.
你寫的每個腳本都應該在檔案開頭加上set -e,這句語句告訴bash如果任何語句的執行結果不是true則應該退出。這樣的好處是防止錯誤像滾雪球般變大導緻一個緻命的錯誤,而這些錯誤本應該在之前就被處理掉。如果要增加可讀性,可以使用set -o errexit,它的作用與set -e相同。
Using -e gives you error checking for free. If you forget to check something, bash will do it for you. Unfortunately it means you can't check $? as bash will never get to the checking code if it isn't zero. There are other constructs you could use:
使用-e幫助你檢查錯誤。如果你忘記檢查(執行語句的結果),bash會幫你執行。不幸的是,你将無法檢查$?,因為如果執行的語句不是傳回0,bash将無法執行到檢查的代碼。你可以使用其他的結構:
<code>command</code>
<code>if</code> <code>[ </code><code>"$?"</code><code>-</code><code>ne</code> <code>0]; </code><code>then</code>
<code> </code><code>echo</code> <code>"command failed"</code><code>; </code>
<code> </code><code>exit</code> <code>1; </code>
<code>fi</code>
could be replaced with
能夠被代替為
<code>command</code> <code>|| { </code><code>echo</code> <code>"command failed"</code><code>; </code><code>exit</code> <code>1; }</code>
說明:|| command未執行成功,則執行 { echo "command failed"; exit 1; }
or
或者
<code>if</code> <code>! </code><code>command</code><code>; </code><code>then</code>
<code> </code><code>echo</code> <code>"command failed"</code><code>; </code>
What if you have a command that returns non-zero or you are not interested in its return value? You can use command || true, or if you have a longer section of code, you can turn off the error checking, but I recommend you use this sparingly.
如果你有一個指令傳回非0或者你對語句執行的結果不關心,那你可以使用command || true,或者你有一段很長的代碼,你可以關閉錯誤檢查(不使用set -e),但是我還是建議你保守地使用這個語句。
本文轉自 Mr_sheng 51CTO部落格,原文連結:http://blog.51cto.com/sf1314/2062713