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

主頁 > 知識庫 > 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退出狀態碼及其應用詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    精品国产一二三区| 99久久精品国产麻豆演员表| 欧美日本一区二区三区| 一区二区三区免费网站| 欧美性色黄大片| 日韩中文字幕亚洲一区二区va在线 | 欧美日韩国产电影| 丝袜美腿亚洲综合| 精品久久久久久最新网址| 激情五月婷婷综合| 中文字幕 久热精品 视频在线 | 亚洲精品一二三四区| 91精彩视频在线观看| 亚洲午夜私人影院| 欧美大尺度电影在线| 懂色av一区二区三区免费看| 亚洲乱码日产精品bd| 欧美精品三级日韩久久| 精品一区二区av| 日韩美女视频一区二区| 欧美裸体一区二区三区| 国产精品羞羞答答xxdd| 亚洲精品乱码久久久久| 91精品国产综合久久久久久漫画 | 国产欧美一区在线| 欧洲av在线精品| 久久超级碰视频| 亚洲欧美在线aaa| 欧美一区二区三区免费大片| 国产成人8x视频一区二区| 亚洲女子a中天字幕| 日韩欧美高清dvd碟片| 99热精品一区二区| 免费日本视频一区| 国产精品久久影院| 欧美mv和日韩mv国产网站| 91丨porny丨国产| 久久精品国产亚洲一区二区三区| 欧美经典一区二区三区| 欧美精品国产精品| 成人动漫一区二区在线| 午夜不卡av免费| 综合久久久久综合| 欧美精品一区二区精品网| 欧美中文字幕一二三区视频| 国产99久久久精品| 久久精品99久久久| 亚洲成人你懂的| 综合欧美亚洲日本| 国产精品私人影院| 欧美成人官网二区| 欧美日韩日日夜夜| 91麻豆自制传媒国产之光| 国产一区激情在线| 亚洲电影一区二区| 亚洲色图.com| 国产精品蜜臀av| 亚洲精品在线免费观看视频| 在线观看网站黄不卡| 成人激情校园春色| 国产精品自在在线| 久久精品国产精品青草| 天天av天天翘天天综合网色鬼国产| 国产精品福利一区二区三区| 国产色91在线| 久久精品视频在线看| 日韩女优毛片在线| 欧美一卡二卡在线观看| 777亚洲妇女| 在线成人小视频| 7777精品伊人久久久大香线蕉完整版 | 91日韩精品一区| 成人动漫一区二区| jlzzjlzz国产精品久久| 国产91色综合久久免费分享| 国产精品自拍三区| 国产一区91精品张津瑜| 国产成人在线视频网址| 国产大陆亚洲精品国产| 国产精品91一区二区| 国产.欧美.日韩| eeuss鲁片一区二区三区在线看| 在线观看日韩国产| 91色|porny| 欧美日韩中字一区| 欧美精品vⅰdeose4hd| 欧美一级爆毛片| www日韩大片| 久久久.com| 亚洲欧洲制服丝袜| 一区二区日韩电影| 天堂蜜桃一区二区三区| 男女男精品网站| 国产精品456| 99久久国产综合精品色伊| 日本福利一区二区| 制服丝袜亚洲精品中文字幕| 久久综合中文字幕| 中文字幕一区二区在线观看| 一区二区三区在线高清| 日韩精品免费专区| 国产一区在线观看麻豆| 波多野结衣在线aⅴ中文字幕不卡| 91老师国产黑色丝袜在线| 欧美三级午夜理伦三级中视频| 91精品国产综合久久福利| 久久精品亚洲国产奇米99| 国产精品久久久久久久裸模| 亚洲自拍偷拍麻豆| 理论电影国产精品| 不卡一区中文字幕| 欧美日韩精品欧美日韩精品一| 亚洲精品一区二区精华| 一区二区三区91| 黄页视频在线91| 91福利社在线观看| 精品成人一区二区三区四区| 亚洲欧美日韩国产手机在线| 天堂蜜桃一区二区三区 | 亚洲同性同志一二三专区| 午夜精品久久久久久| 国产69精品久久777的优势| 欧美日韩在线观看一区二区 | 色噜噜久久综合| 欧美大片免费久久精品三p| 国产精品免费视频网站| 日日摸夜夜添夜夜添精品视频| 成人一区二区三区在线观看| 欧美一区二区女人| 亚洲欧美日韩在线播放| 精品一区二区三区影院在线午夜| 91在线高清观看| 久久久久久久久97黄色工厂| 亚洲成人av免费| 91欧美激情一区二区三区成人| 精品区一区二区| 三级亚洲高清视频| 日本福利一区二区| 国产精品久久毛片a| 麻豆成人av在线| 欧美日韩中文字幕一区| 成人免费小视频| 国产suv精品一区二区883| 欧美一区二区免费| 亚洲福中文字幕伊人影院| 99视频精品在线| 国产精品不卡在线| 国产一区日韩二区欧美三区| 日韩美女一区二区三区四区| 丝袜诱惑亚洲看片| 欧美日韩国产免费一区二区| 亚洲伦在线观看| www.亚洲在线| 国产色91在线| 国产91精品久久久久久久网曝门 | 国产精品一二一区| 欧美mv和日韩mv的网站| 青青草原综合久久大伊人精品优势 | 玉足女爽爽91| 成人免费视频播放| 久久久久久夜精品精品免费| 韩国av一区二区三区四区| 欧美大片在线观看一区二区| 蜜桃精品视频在线| 欧美一区永久视频免费观看| 亚洲成人777| 欧美精品v日韩精品v韩国精品v| 亚洲成在线观看| 欧美日韩高清不卡| 午夜激情综合网| 日韩三级视频在线看| 久久超碰97中文字幕| 精品久久国产字幕高潮| 国产主播一区二区三区| 国产欧美一区二区在线| 成人av一区二区三区| 亚洲激情男女视频| 欧美日韩综合在线免费观看| 天天色天天操综合| 精品福利一区二区三区| 粉嫩av亚洲一区二区图片| 亚洲欧美视频在线观看| 欧美又粗又大又爽| 日韩**一区毛片| 久久久久久久久伊人| 99re在线精品| 午夜视黄欧洲亚洲| 欧美成人国产一区二区| 成人免费毛片片v| 亚洲小少妇裸体bbw| 日韩一区二区三区免费观看| 国产伦精一区二区三区| 日韩久久一区二区| 正在播放亚洲一区| 成人综合婷婷国产精品久久 | 精久久久久久久久久久| 国产精品久久综合| 69堂亚洲精品首页| 国产精品77777| 亚洲最大色网站|