日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bash-shell高级编程--退出和退出状态码

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bash-shell高级编程--退出和退出状态码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

退出和退出狀態(tài)碼

大家都知道exit是用來退出一個(gè)腳本,既可以使用exit來結(jié)束一個(gè)腳本,像常用的C語言一樣,它也會返回一個(gè)值,這個(gè)值會傳遞給腳本的父進(jìn)程,父進(jìn)程會使用這個(gè)值做下一步的處理。

其實(shí)在linux中執(zhí)行任何一個(gè)命令都會返回一個(gè)退出碼,成功的命令返回0,而不成功的命令返回非零值,非零值通常通常都會解釋成一個(gè)錯(cuò)誤碼。

當(dāng)然腳本中的函數(shù)和腳本本身也會返回退出狀態(tài)碼,在腳本中最后執(zhí)行的命令決定腳本返回的狀態(tài)碼(就是exit之前的命令)

#!/bin/bashtldr ls. . .# 在執(zhí)行exit之前的一個(gè)命令決定腳本返回值狀態(tài)碼值 ls -l nameexit # exit $?

不帶參數(shù)的exit命令和exit $?的效果是一樣的,就算你在腳本的末尾不寫exit效果也是一樣的

bash腳本中$?保存這最后執(zhí)行命令的退出狀態(tài)碼,當(dāng)函數(shù)返回之后,$?同樣保存函數(shù)中最后執(zhí)行的命令的退出狀態(tài)碼,這就是bash對函數(shù)返回值的處理方法,同樣,當(dāng)一個(gè)腳本退出$?保存了腳本的退出狀態(tài)碼,這個(gè)退出狀態(tài)碼就是腳本中最后執(zhí)行的命令的退出狀態(tài)碼。

#!/bin/bash echo hello echo $? # 退出狀態(tài)為0, 因?yàn)槊顖?zhí)行成功. lskdf # 無效命令. echo $? # 非零的退出狀態(tài), 因?yàn)槊顖?zhí)行失敗. echo exit 113 # 返回113退出狀態(tài)給shell. # 為了驗(yàn)證這個(gè)結(jié)果, 可以在腳本結(jié)束的地方使用"echo $?". # 執(zhí)行結(jié)果 andrew@andrew:/work/bash/src$ bash exit_example.sh hello 0 exit_example.sh: 行 5: lskdf: 未找到命令 127andrew@andrew:/work/bash/src$ echo $? 113

使用$?測試腳本中命令執(zhí)行的結(jié)果,往往顯得特別的有用

!邏輯非操作,將會反轉(zhuǎn)命令或條件的測試結(jié)果,將會影響退出狀態(tài)碼

true # "true" 是內(nèi)建命令. echo "exit status of \"true\" = $?" # 0! true echo "exit status of \"! true\" = $?" # 1 # 注意: "!" 需要一個(gè)空格. # !true將導(dǎo)致"command not found"錯(cuò)誤# 如果一個(gè)命令以'!'開頭, 那么會啟用Bash的歷史機(jī)制.true !true # 這次就沒有錯(cuò)誤了, 也沒有反轉(zhuǎn)結(jié)果. # 它只是重復(fù)了之前的命令(true).

總結(jié)

以上是生活随笔為你收集整理的bash-shell高级编程--退出和退出状态码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。