中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本返回值及其使用場景的實現方法

發布時間:2021-04-06 09:38:43 來源:億速云 閱讀:754 作者:小新 欄目:開發技術

小編給大家分享一下shell腳本返回值及其使用場景的實現方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

應用場景

在一些應用中(比如Jenkins),嵌入了shell腳本,系統通過shell腳本的返回值來判斷執行結果,如果返回值非0,則發生了執行錯誤,需要中止執行,這在使用單個命令時沒有問題。然而,在shell (A)腳本又調用了shell腳本文件(B )時,當被調用的shell腳本B執行過程中發生了錯誤時,系統不會認為B有問題,而是繼續往下執行。這樣就會掩蓋了問題。

解決

在被調用的shell腳本B中返回錯誤代碼,當被調用的shell腳本B中發生錯誤時,捕捉該錯誤代碼,然后返回該錯誤代碼,這樣系統就能捕獲被調用的腳本B的錯誤代碼,而及時中止執行。

1、實現步驟:

(1)獲取執行結果代碼。使用“$?”獲取。

(2)加入執行執行結果代碼檢測函數,若發現結果代碼非0,則返回腳本的執行代碼。使用“exit [代碼]”表示。

2、示例:

Shell A:

#do something ...
/home/test/B.sh
#do something ...

Shell B(/home/test/B.sh):

check_result()
{
 echo input params:$1

 if [ $1 != 0 ]; then
  echo wahaha
  exit $1
 fi
}

ls /
echo 1.result:$?
check_result $?

cat /xxxyyy
v1=$?
echo 2.result:{v1}
check_result $v1

check_result()為定義的檢測函數,當命令的返回碼非0時,shell腳本停止執行,返回代碼。
v1=$? 保存命令執行返回碼,其為臨時變量。需要保存留作后用。

附錄:

1、shell 返回碼

表格 D-1. "保留的"退出碼

退出碼的值含義例子注釋
1通用錯誤let "var1 = 1/0"各種各樣的錯誤都可能使用這個退出碼, 比如"除0錯誤"
2shell內建命令使用錯誤(Bash文檔上有說明)
很少看到, 通常情況下退出碼都為1
126命令調用不能執行
程序或命令的權限是不可執行的
127"command not found"
估計是$PATH不對, 或者是拼寫錯誤
128exit的參數錯誤exit 3.14159exit只能以整數作為參數, 范圍是0 - 255(見腳注)
128+n信號"n"的致命錯誤kill -9 腳本的$PPID$? 返回137(128 + 9)
130用Control-C來結束腳本
Control-C是信號2的致命錯誤, (130 = 128 + 2, 見上邊)
255*超出范圍的退出狀態exit -1exit命令只能夠接受范圍是0 - 255的整數作為參數

2、shell返回碼與函數返回碼、命令返回碼的區別

  • shell返回碼,標識整個腳本的執行結果狀態,用“exit 返回碼”表示。

  • 函數返回碼,標識一個函數的執行結果狀態,用“return 返回碼”表示。

  • 命令返回碼,標識一個命令的執行結果狀態,在命令執行后,緊跟著獲取返回碼,用"$?"獲取。

以上是“shell腳本返回值及其使用場景的實現方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

响水县| 乐陵市| 连州市| 正宁县| 镇远县| 临澧县| 长垣县| 庐江县| 青海省| 平阴县| 宁河县| 灌阳县| 广河县| 垣曲县| 长泰县| 武汉市| 汉源县| 琼结县| 聂拉木县| 芮城县| 宿迁市| 永吉县| 商河县| 镇江市| 曲沃县| 游戏| 福海县| 沙雅县| 红安县| 合肥市| 酉阳| 邵阳市| 涿州市| 临桂县| 屏南县| 革吉县| 西丰县| 望城县| 绥德县| 桃园县| 林甸县|