今天小編就爲大家分享一篇關於,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
1.exit命令
exit命令是Shell內建命令,用於退出當前Shell進程。使用格式如下:
exit [<n>]
可以指定退出狀態n,n的取值範圍是0-255,一般情況下,0表示正常退出,非零表示異常退出。如果狀態碼是0-255之外的數值,則會被強制轉換爲uint8_t類型的數值,比如-1會被轉換爲255,256會發生類型寬度截斷,被轉換爲0。狀態碼n可以不指定,默認是上一條命令的退出狀態碼。
關於狀態碼值的定義尚未有統一的標準,但是結束程序時隨意的指定一個狀態碼是一個不好的行爲,應該使用統一的狀態碼。這樣便於調用者更具狀態碼快速粗略地推斷出被調的狀態,而不用去查找狀態碼的具體含義。當然實際的狀態碼值可以自定義,項目中統一即可,但還是推薦使用GNU C的頭文件<sysexits.h>中對於狀態碼的定義。
#define EX_OK 0 /* successful termination */ #define EX__BASE 64 /* base value for error messages */ #define EX_USAGE 64 /* command line usage error */ #define EX_DATAERR 65 /* data format error */ #define EX_NOINPUT 66 /* cannot open input */ #define EX_NOUSER 67 /* addressee unknown */ #define EX_NOHOST 68 /* host name unknown */ #define EX_UNAVAILABLE 69 /* service unavailable */ #define EX_SOFTWARE 70 /* internal software error */ #define EX_OSERR 71 /* system error (e.g., can't fork) */ #define EX_OSFILE 72 /* critical OS file missing */ #define EX_CANTCREAT 73 /* can't create (user) output file */ #define EX_IOERR 74 /* input/output error */ #define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ #define EX_PROTOCOL 76 /* remote error in protocol */ #define EX_NOPERM 77 /* permission denied */ #define EX_CONFIG 78 /* configuration error */ #define EX__MAX 78 /* maximum listed value */
2.return關鍵字
return是語言級別的一個關鍵字,用於結束函數並返回一個結果。return不帶參數時,則會返回函數體中最後一個命令的返回值。
return也可以用於使用 . 或source的方式包含的子Shell腳本中,可以返回指定的狀態或者腳本中最後一個命令的exit status。比如如下腳本:
#!/bin/bash if [ $# -ne 1 ] then echo "please input parameter" return 1 fi
上面的腳本如果直接執行則會報如下錯誤:
return: can only`return' from a function or sourced script
但是如果使用 . 或souce的方式被包含到父Shell中,則可以正常運行。
3.exit與return的區別
- (1)作用不同。exit用於在程序運行的過程中隨時結束程序,exit的參數是返回給OS的。exit是結束一個進程,它將刪除進程使用的內存空間,同時把錯誤信息返回父進程。而return是返回函數值並退出函數;
- (2)語義層級不同。return是語言級別的,它表示了調用堆棧的返回;而exit是系統調用級別的,它表示了一個進程的結束;
- (3)使用方法不用。return一般用在函數方法體內,exit可以出現在Shell腳本中的任意位置。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接