婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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退出狀態碼及其應用詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美精品xxxxbbbb| 亚洲在线免费播放| 久久综合久久鬼色| 亚洲色图欧洲色图| 毛片av一区二区| 一本一本大道香蕉久在线精品| 欧美国产精品一区二区三区| 爽爽淫人综合网网站| 成人性生交大片免费看在线播放| 精品视频999| 亚洲视频 欧洲视频| 成人做爰69片免费看网站| 欧美一级欧美三级| 亚洲成年人影院| 色哟哟一区二区在线观看| 亚洲人成在线观看一区二区| 国产一区在线观看麻豆| 日韩欧美的一区| 亚洲成人在线观看视频| 欧美成人精品二区三区99精品| 五月激情综合网| 日本乱码高清不卡字幕| 日本一二三不卡| 欧美国产1区2区| 国产99久久久精品| 中文字幕欧美三区| 国产乱妇无码大片在线观看| 麻豆精品一区二区av白丝在线 | 日韩成人伦理电影在线观看| 99久久99久久精品免费观看| 欧美日韩久久不卡| 亚洲另类中文字| 波多野结衣的一区二区三区| 欧美视频第二页| 日本在线不卡视频一二三区| 成人免费毛片app| 99精品视频中文字幕| 蜜臀av性久久久久蜜臀aⅴ流畅| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品毛片大码女人| 一个色综合网站| 丁香婷婷综合色啪| 欧美日韩高清在线| 国产精品99久久久久| 亚洲永久精品大片| 亚洲国产你懂的| 中文字幕不卡一区| 国产精品一区专区| 欧美一区二区三区喷汁尤物| 久久精品国产一区二区| 色综合天天综合网国产成人综合天| 国产成人免费xxxxxxxx| 国产精品综合网| 国产一区二区三区四| 亚洲日本va在线观看| 91麻豆精品国产91久久久资源速度| 777久久久精品| 中文字幕一区不卡| 亚洲欧洲成人精品av97| 日韩女优电影在线观看| 亚洲乱码国产乱码精品精小说| 欧美一区二区三区婷婷月色| 中文一区在线播放| 奇米在线7777在线精品| 国产精品综合一区二区三区| 亚洲国产欧美另类丝袜| 精品99一区二区三区| 欧美一区二区三区免费在线看| 亚洲国产婷婷综合在线精品| 亚洲视频 欧洲视频| 不卡的av网站| 亚洲在线视频免费观看| 久久久久久久久久久久久夜| 欧美一区二区在线播放| 成人精品一区二区三区中文字幕| 狠狠色丁香久久婷婷综合丁香| 久久精品视频免费| 国产精品视频一二三区| 欧美精品一区在线观看| 精品日韩欧美一区二区| 欧美体内she精高潮| 精品视频1区2区| 色综合久久精品| 欧美久久久一区| 在线观看日产精品| 欧美男女性生活在线直播观看 | 成人精品视频.| 99久久精品国产观看| 韩国三级中文字幕hd久久精品| 国产美女精品在线| 蜜桃av一区二区| 丁香婷婷综合五月| 丰满少妇在线播放bd日韩电影| 亚洲激情自拍偷拍| 亚洲欧洲av另类| 中文字幕乱码日本亚洲一区二区| 欧美电影免费观看高清完整版在 | 91福利精品第一导航| 欧美久久久影院| 欧美三级三级三级| 欧美大肚乱孕交hd孕妇| 成人免费视频在线观看| 国产精品成人在线观看| 亚洲欧洲国产专区| 亚洲精品一二三| 亚洲国产精品久久艾草纯爱| 亚洲成人7777| av不卡在线观看| 欧美在线免费观看视频| 久久麻豆一区二区| 国产精品人人做人人爽人人添| 日韩一区精品字幕| 久久精品久久久精品美女| 91首页免费视频| 欧美在线不卡一区| 国产亚洲va综合人人澡精品| 国产精品天干天干在观线| 亚洲国产激情av| 极品少妇一区二区三区精品视频| 久久99精品久久久久久动态图| av一二三不卡影片| 欧美色视频一区| 国产精品精品国产色婷婷| 亚洲精品乱码久久久久久日本蜜臀| 国产精品一区三区| 91成人在线观看喷潮| 国产精品成人一区二区艾草| 青青青伊人色综合久久| 欧美视频一区二区| 国产日本欧美一区二区| 夫妻av一区二区| 国产女同互慰高潮91漫画| 亚洲一区二区三区四区不卡| 色综合咪咪久久| 欧美sm美女调教| 久久99最新地址| 欧洲另类一二三四区| 久久青草欧美一区二区三区| 国产一区在线看| 久久久精品国产免大香伊| 日本欧美肥老太交大片| av在线播放一区二区三区| 亚洲天堂成人在线观看| 国产一本一道久久香蕉| 久久女同互慰一区二区三区| 丝袜亚洲精品中文字幕一区| 91精品久久久久久久99蜜桃| 亚洲欧美日韩人成在线播放| 色偷偷成人一区二区三区91| 国产精品卡一卡二| 亚洲成av人片观看| 欧美一区二区在线免费观看| 欧美国产日产图区| 色婷婷综合久久久久中文| 欧美精品国产精品| 六月婷婷色综合| 欧美精品乱码久久久久久按摩| 另类小说视频一区二区| 欧美老肥妇做.爰bbww视频| 免费欧美高清视频| 欧美日韩一区在线| 精品一区二区国语对白| 欧美mv和日韩mv的网站| 日韩av中文字幕一区二区三区| 色偷偷久久人人79超碰人人澡| 亚洲色欲色欲www| 97成人超碰视| 伊人性伊人情综合网| 在线视频国内一区二区| 三级久久三级久久久| 欧美精品黑人性xxxx| 国产美女在线精品| 久久久亚洲午夜电影| 国产精品一二三| 性久久久久久久久| 中文字幕中文乱码欧美一区二区| 欧美一区二区二区| 91精品国产麻豆| 亚洲欧美日韩久久| 日本不卡免费在线视频| 亚洲精品乱码久久久久久日本蜜臀| 波多野结衣在线aⅴ中文字幕不卡| 久久99精品久久久久久国产越南 | 久久99精品国产| 欧美日韩午夜在线| 久久久久九九视频| 天堂在线亚洲视频| 国产免费成人在线视频| 白白色 亚洲乱淫| 亚洲男人都懂的| 日韩欧美色电影| 亚洲精选视频免费看| 久久99精品久久久| 亚洲国产精品久久久久秋霞影院 | 性做久久久久久免费观看欧美| 亚洲大尺度视频在线观看| 国产精品入口麻豆原神| 欧美大片免费久久精品三p| 蜜桃久久久久久久| 久久综合精品国产一区二区三区|