Unix Linux指令碼中 set e 的作用

2021-07-26 04:14:26 字數 1366 閱讀 5552

有些指令碼中會看到這樣的語句:

[html]view plain

copy

print?

#!/bin/bash  

set -e  

command 1  

command 2  

...  

exit 0  

#!/bin/bash

set -e

command 1

command 2

...exit 0

「set -e」 這句語句告訴bash如果任何語句的執行結果不是true則應該退出。這樣的好處是防止錯誤像滾雪球般變大導致乙個致命的錯誤,而這些錯誤本應該在之前就被處理掉。如果要增加可讀性,可以使用set -o errexit,它的作用與set -e相同。

使用-e幫助你檢查錯誤。如果你忘記檢查執行語句的結果,bash會幫你執行。不幸的是,你將無法檢查$?,因為如果執行的語句不是返回0,bash將無法執行到檢查的**。你可以使用其他的結構:

[html]view plain

copy

print?

command    

if [ "$?"-ne 0]; then     

echo "command failed";     

exit 1;     

fi   

command  

if [ "$?"-ne 0]; then

echo "command failed";

exit 1;

fi

可被代替為:

[html]view plain

copy

print?

command ||      

command ||
或者:

[html]view plain

copy

print?

if ! command; then    

echo "command failed";     

exit 1;     

fi    

if ! command; then  

echo "command failed";

exit 1;

fi

command || true,或者你有一段很長的**,你可以關閉錯誤檢查(不使用set -e),但是我還是建議你保守地使用這個語句。

**:

詳解Unix Linux中Shell指令碼的輸入輸出

shell的i o語法比較複雜,難以理解,更難以正確使用。shell的輸入輸出語法有兩個難點 重定向和檔案描述符。我以前對shell指令碼輸入 輸出的理解也有錯誤。最近重新整理思路,決定寫一篇文章來總結i o重定向。一 先介紹幾個基本概念 1 檔案 file 在unix linux中,檔案型別有七種...

Unix Linux指令碼中 set e 的作用

編寫shell指令碼沒多久,對於其許多命令的具體用法還不太熟悉。最近剛好有需求,就嘗試用指令碼去實現。其中就有用到set e選項。在用這個命令之前,也查過其功能,描述比較簡單 就是當命令以非零狀態退出時,則退出shell。主要作用是,當指令碼執行出現意料之外的情況時,立即退出,避免錯誤被忽略,導致最...

Bash指令碼中的set命令

伺服器的開發和管理離不開 bash 指令碼,掌握它需要學習大量的細節。set命令是 bash 指令碼的重要環節,卻常常被忽視,導致指令碼的安全性和可維護性出問題。本文介紹它的基本用法,讓你可以更安心地使用 bash 指令碼。我們知道,bash 執行指令碼的時候,會建立乙個新的 shell。bash ...