校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Shell退出狀態碼及其應用詳解

Shell退出狀態碼及其應用詳解

熱門標簽:蘭州電銷機器人加盟 AI智能電銷機器人壞處 電話機器人對家居行業幫助大嗎 電商外呼系統排名 合肥電銷外呼系統供應商 黑暗之魂3地圖標注 沈陽ai電銷智能機器人 地圖標注審核周期 如何申請400的電話呀

Shell 中運行的命令會使用0-255之間的整數值,作為退出狀態碼,并以此來告知shell該命令執行的狀態。通常情況下,約定0代表命令成功結束,非0代表程序非正常退出。

典型退出狀態碼及其含義

退出狀態碼

含義

0

命令運行成功

1

通知未知錯誤

2

誤用shell命令

126

命令不可執行

127

沒有找到命令

128

無效退出參數

128+x

linux信號x的嚴重錯誤

130

命令通過Ctrl+C終止

255

退出狀態碼越界

一、退出狀態碼的小實驗

小實驗1

未指定函數返回值,且函數最后一條命令執行成功

#!/bin/bash
function hello(){
  #echo "Hello World";
  ech "Hello World";
  return 3
  # return 260
}
hello
echo $?

執行結果

****@****:/******$ bash test.sh
Hello World
0

說明:由于此時未指定返回值,所以以函數最后一條被執行的命令echo "Hello World";的執行狀態作為函數的退出狀態。此時 echo "Hello World";執行成功,所以返回0作為退出狀態碼。

小實驗2

未指定函數返回值,且函數最后一條命令執行失敗(以無效指令為例)

#!/bin/bash
function hello(){
  #echo "Hello World";
  ech "Hello World";
  #return 3
  # return 260
}
hello
echo $?

執行結果

****@****:/******$ bash test.sh
test.sh: line 4: ech: command not found
127

說明:此時未指定返回值,所以函數以ech "Hello World";的執行狀態作為hello函數的退出狀態。執行失敗,且未約定特定的返回值用于標識無效指令返回值,所以此時默認以127作為退出狀態返回值。

小實驗3

指定函數返回值,且函數返回值在約定范圍內

#!/bin/bash
function hello(){
  echo "Hello World";
  #ech "Hello World";
  return 3
  # return 260
}
hello
echo $?

運行結果

****@****:/******$ bash test.sh
Hello World
3

說明:hello函數指定了返回值為3,由于3在約定的0~255范圍內,所以hello函數的退出狀態值碼從0變更為3(可對比小實驗1)。

小實驗4

指定函數返回值,且函數返回值在約定范圍外

#!/bin/bash
function hello(){
  echo "Hello World";
  #ech "Hello World";
  #return 3
  return 260
}
hello
echo $?

返回結果

****@****:/******$ bash test.sh
Hello World
4

說明:hello函數指定了函數返回值為260,由于260超出了0~255,所以需要對指定的返回值進行一次取模運算,所以退出狀態碼由260變更為4。

小實驗5

指定函數返回值,但返回值前發生命令報錯

#!/bin/bash
function hello(){
  #echo "Hello World";
  ech "Hello World";
  return 3
  #return 260
}
hello
echo $?

執行結果

****@****:/******$ bash test.sh
test.sh: line 4: ech: command not found
3

說明:hello函數中一條命令執行報錯并會影響后續代碼的執行,此時hello的函數返回值為指定的3。

小實驗6

在小實驗5的代碼運行以后再次輸入echo $?得到的還會是3么?

代碼與運行結果

****@****:/******$ cat test.sh
#!/bin/bash
function hello(){
  #echo "Hello World";
  ech "Hello World";
  return 3
  #return 260
}
hello
echo $?


#exit 270

****@****:/******$ bash test.sh
test.sh: line 4: ech: command not found
3
****@****:/******$ echo $?
0

說明:由于hello函數指定了退出狀態碼,所以第一次輸出的退出狀態碼為指定的整數3;第二次退出狀態碼則取腳本中最后一條命令echo $?命令的執行狀態,由于腳本中的echo $?成功執行,所以第二次讀取的退出狀態碼為0。

二、利用退出狀態碼實現命令的重試

思路:

1、 利用退出狀態碼,可以判斷命令是否成功執行

2、 利用循環語句,可以實現命令的重試

3、 如果只設置退出狀態碼為0作為唯一的循環退出條件,可能出現死循環,所以最好增加最大重試次數的控制邏輯

4、$?是一個即使變化的值,如果需要多次使用,最好賦值給一個變量

代碼

#! /bin/sh
count=0   #記錄重試次數
while [ 0 -eq 0 ]
do
  echo ".................. job begin ..................."
#  date
  dat
  flag=$?
  echo "\$?"=${flag}
  if [ ${flag} -eq 0 ]; then
    echo "--------------- job complete ---------------"
    break;
  else
    count=$[ ${count}+1 ]
    if [ ${count} -eq 6 ];then
      echo "--------------- job failed ---------------"
      break;
    fi
    echo "...............error occur, retry in 60 seconds,count=${count} .........."
#    sleep 60
  fi
done

運行結果

****@****:/******$ bash test_while.sh
.................. job begin  ...................
test_while.sh: line 7: dat: command not found
$?=127
...............error occur, retry in 60 seconds,count=1 ..........
.................. job begin  ...................
test_while.sh: line 7: dat: command not found
$?=127
...............error occur, retry in 60 seconds,count=2 ..........
.................. job begin  ...................
test_while.sh: line 7: dat: command not found
$?=127
...............error occur, retry in 60 seconds,count=3 ..........
.................. job begin  ...................
test_while.sh: line 7: dat: command not found
$?=127
...............error occur, retry in 60 seconds,count=4 ..........
.................. job begin  ...................
test_while.sh: line 7: dat: command not found
$?=127
...............error occur, retry in 60 seconds,count=5 ..........
.................. job begin  ...................
test_while.sh: line 7: dat: command not found
$?=127
--------------- job failed ---------------

說明:當退出狀態碼非0時,代碼中“[ 0 -eq 0 ]”和“[${flag}-eq 0 ]”部分實現了重試功能;“[${count}-eq 6 ]”部分實現了對重試邏輯不得超過6次的控制。

三、總結

Shell退出狀態碼:

1、 假如沒有指定返回值,那么會用腳本的最后一個命令的執行狀態,作為退出的狀態碼,支持用exit命令指定退出碼。退出的狀態碼范圍是0~255,如果自定義的退出碼不在范圍內,會對其執行取模運算;

2、 假如執行的是一個有返回值的函數或者程序,那么執行結束的返回值會被當做當前函數或程序的退出狀態值。

到此這篇關于Shell退出狀態碼及其應用詳解的文章就介紹到這了,更多相關Shell退出狀態碼內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Shell $?獲取函數返回值或者上一個命令的退出狀態
  • Shell退出狀態的使用

標簽:常州 河池 隴南 黔南 黔南 通遼 河北 淮南

巨人網絡通訊聲明:本文標題《Shell退出狀態碼及其應用詳解》,本文關鍵詞  Shell,退出,狀態,碼,及其,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell退出狀態碼及其應用詳解》相關的同類信息!
  • 本頁收集關于Shell退出狀態碼及其應用詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩一区二区三区四区 | 精品国产三级a在线观看| av在线播放成人| 国产91精品一区二区| 国产高清久久久| 成人一区二区三区| yourporn久久国产精品| 成人免费视频网站在线观看| 丁香婷婷综合网| 成人精品电影在线观看| 国产成人av一区二区三区在线观看| 国产麻豆精品95视频| 成人听书哪个软件好| 成人一级片网址| 欧美色爱综合网| 日韩午夜激情av| 国产日本亚洲高清| 亚洲免费观看视频| 亚洲成人777| 国产毛片精品视频| 色综合欧美在线| 欧美日韩国产乱码电影| 欧美一级理论片| 国产精品免费视频一区| 亚洲精品视频观看| 日本不卡一二三区黄网| 国产高清在线观看免费不卡| 日本精品视频一区二区三区| 91精品免费观看| 国产三区在线成人av| 亚洲激情图片一区| 久久精品72免费观看| 成人aaaa免费全部观看| 欧美日韩精品欧美日韩精品| 精品久久一区二区| 国产欧美精品一区二区三区四区 | www亚洲一区| 综合久久给合久久狠狠狠97色| 亚洲专区一二三| 成人一区二区视频| 91精品国产手机| 亚洲精品乱码久久久久久| 五月婷婷久久丁香| 成人爽a毛片一区二区免费| 欧美亚洲国产怡红院影院| 久久影院视频免费| 丝袜国产日韩另类美女| a级精品国产片在线观看| 日韩午夜在线影院| 亚洲成a人v欧美综合天堂下载 | 国产精品久久精品日日| 免费成人你懂的| 91国产免费观看| 亚洲国产精华液网站w| 免费看精品久久片| 欧美三级日本三级少妇99| 中文字幕亚洲一区二区av在线| 激情另类小说区图片区视频区| 欧美视频第二页| 亚洲精品免费在线| 成人国产精品免费观看动漫| 精品理论电影在线观看| 男人的天堂亚洲一区| 欧美三级视频在线播放| 亚洲三级免费观看| 成人av综合一区| 久久久国际精品| 国产精品正在播放| 国产日本欧美一区二区| 国产夫妻精品视频| 国产欧美一区二区精品性| 激情成人午夜视频| 久久久影视传媒| 国产麻豆视频一区二区| 国产日本欧洲亚洲| 粉嫩久久99精品久久久久久夜| 国产亚洲精品7777| 高清久久久久久| 亚洲欧洲性图库| 色综合久久久久综合体桃花网| 亚洲视频 欧洲视频| 色噜噜狠狠色综合中国| 亚洲综合小说图片| 欧美日韩美少妇| 免费高清在线一区| 久久蜜臀中文字幕| 99久久精品99国产精品| 一区二区在线观看不卡| 欧美日韩一区二区三区在线| 图片区小说区国产精品视频| 欧美久久免费观看| 国产一区二区三区精品视频| 国产日本欧美一区二区| 91丨porny丨在线| 亚洲国产va精品久久久不卡综合 | 国产99久久久久久免费看农村| 国产三级精品视频| av成人动漫在线观看| 亚洲最新在线观看| 欧美一区二区私人影院日本| 国产一区二区久久| 亚洲欧美日韩电影| 日韩一区二区在线免费观看| 成人免费观看av| 有码一区二区三区| 欧美高清精品3d| 国产一区二区在线看| 亚洲一二三级电影| 精品少妇一区二区三区在线视频| 从欧美一区二区三区| 丝袜诱惑亚洲看片| 欧美国产精品久久| 欧美一卡二卡三卡| 99这里只有久久精品视频| 免费一级欧美片在线观看| 中文字幕中文在线不卡住| 日韩精品中文字幕一区二区三区| 99riav一区二区三区| 蜜桃久久av一区| 亚洲美女电影在线| 久久久久久久久久久久久夜| 欧美亚洲国产bt| 国产凹凸在线观看一区二区| 天天综合日日夜夜精品| 亚洲日本在线天堂| 久久精品在线免费观看| 欧美精品在线视频| 在线日韩av片| 成人黄色网址在线观看| 国产在线视频不卡二| 亚洲第一主播视频| 日韩码欧中文字| 国产精品色一区二区三区| 日韩欧美国产电影| 欧美日韩精品欧美日韩精品| 色先锋资源久久综合| 成人黄页毛片网站| 国产激情精品久久久第一区二区| 日韩激情一二三区| 视频一区二区三区中文字幕| 亚洲欧美日韩综合aⅴ视频| 亚洲国产精品二十页| 久久精品一区二区三区不卡牛牛| 日韩一级二级三级精品视频| 欧美三级电影精品| 欧美日韩高清在线播放| 欧美日韩国产综合一区二区三区| 97精品超碰一区二区三区| 国产成人免费9x9x人网站视频| 久久国产免费看| 国产呦萝稀缺另类资源| 精品制服美女丁香| 精品一区二区日韩| 狠狠色狠狠色综合| 国产sm精品调教视频网站| 国产一区二区导航在线播放| 国产一区二区三区香蕉| 国产成人免费xxxxxxxx| 97aⅴ精品视频一二三区| 91在线丨porny丨国产| 99久久99久久精品免费看蜜桃| av电影在线观看不卡| 91视频com| 欧美美女黄视频| 精品久久久久久无| 久久亚洲精精品中文字幕早川悠里 | 久久久777精品电影网影网| 久久久久久电影| 日韩久久一区二区| 亚洲超碰精品一区二区| 美女视频一区在线观看| 国产成人av一区二区三区在线| 成人av小说网| 欧美色男人天堂| 2020国产精品自拍| 亚洲欧美成aⅴ人在线观看| 亚洲在线一区二区三区| 麻豆精品在线观看| 国内精品国产三级国产a久久| 国产不卡在线一区| 欧美性色欧美a在线播放| 欧美成人一级视频| 亚洲视频一区二区在线观看| 午夜伦欧美伦电影理论片| 国产精品一二三区在线| 91成人在线精品| 精品久久久久av影院| 中文字幕一区二区三区视频| 日韩中文字幕麻豆| 粉嫩av一区二区三区| 欧美性大战久久| 国产偷国产偷精品高清尤物| 亚洲一区影音先锋| 国产在线视频一区二区| 日本韩国精品在线| 日本一区二区免费在线| 亚洲不卡在线观看| 不卡av免费在线观看| 精品少妇一区二区三区免费观看| 亚洲美女淫视频|