shell腳本返回值及其使用場(chǎng)景的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、寧陽(yáng)網(wǎng)絡(luò)推廣、小程序制作、寧陽(yáng)網(wǎng)絡(luò)營(yíng)銷、寧陽(yáng)企業(yè)策劃、寧陽(yáng)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供寧陽(yáng)建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn

應(yīng)用場(chǎng)景


在一些應(yīng)用中(比如Jenkins),嵌入了shell腳本,系統(tǒng)通過(guò)shell腳本的返回值來(lái)判斷執(zhí)行結(jié)果,如果返回值非0,則發(fā)生了執(zhí)行錯(cuò)誤,需要中止執(zhí)行,這在使用單個(gè)命令時(shí)沒(méi)有問(wèn)題。然而,在shell (A)腳本又調(diào)用了shell腳本文件(B )時(shí),當(dāng)被調(diào)用的shell腳本B執(zhí)行過(guò)程中發(fā)生了錯(cuò)誤時(shí),系統(tǒng)不會(huì)認(rèn)為B有問(wèn)題,而是繼續(xù)往下執(zhí)行。這樣就會(huì)掩蓋了問(wèn)題。

解決


在被調(diào)用的shell腳本B中返回錯(cuò)誤代碼,當(dāng)被調(diào)用的shell腳本B中發(fā)生錯(cuò)誤時(shí),捕捉該錯(cuò)誤代碼,然后返回該錯(cuò)誤代碼,這樣系統(tǒng)就能捕獲被調(diào)用的腳本B的錯(cuò)誤代碼,而及時(shí)中止執(zhí)行。

1、實(shí)現(xiàn)步驟:

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

(2)加入執(zhí)行執(zhí)行結(jié)果代碼檢測(cè)函數(shù),若發(fā)現(xiàn)結(jié)果代碼非0,則返回腳本的執(zhí)行代碼。使用“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()為定義的檢測(cè)函數(shù),當(dāng)命令的返回碼非0時(shí),shell腳本停止執(zhí)行,返回代碼。
v1=$? 保存命令執(zhí)行返回碼,其為臨時(shí)變量。需要保存留作后用。

附錄:


1、shell 返回碼


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


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

2、shell返回碼與函數(shù)返回碼、命令返回碼的區(qū)別


  • shell返回碼,標(biāo)識(shí)整個(gè)腳本的執(zhí)行結(jié)果狀態(tài),用“exit 返回碼”表示。

  • 函數(shù)返回碼,標(biāo)識(shí)一個(gè)函數(shù)的執(zhí)行結(jié)果狀態(tài),用“return 返回碼”表示。

  • 命令返回碼,標(biāo)識(shí)一個(gè)命令的執(zhí)行結(jié)果狀態(tài),在命令執(zhí)行后,緊跟著獲取返回碼,用"$?"獲取。


以上是“shell腳本返回值及其使用場(chǎng)景的實(shí)現(xiàn)方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站欄目:shell腳本返回值及其使用場(chǎng)景的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://muchs.cn/article44/degphe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、ChatGPT網(wǎng)站維護(hù)、App設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司