国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Shell中exit和return的區別講解

2019-10-26 18:59:30
字體:
來源:轉載
供稿:網友

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/bashif [ $# -ne 1 ]then echo "please input parameter"  return 1fi

上面的腳本如果直接執行則會報如下錯誤:

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腳本中的任意位置。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杨浦区| 崇义县| 澄迈县| 崇左市| 买车| 长顺县| 常德市| 滦南县| 噶尔县| 安达市| 夏河县| 甘洛县| 宕昌县| 禹城市| 上杭县| 中宁县| 开封县| 游戏| 丹江口市| 利川市| 满洲里市| 荔波县| 称多县| 南涧| 临汾市| 阳山县| 来凤县| 宜丰县| 沅陵县| 江安县| 万安县| 密云县| 新津县| 古浪县| 龙井市| 龙陵县| 英山县| 千阳县| 九龙坡区| 苗栗市| 突泉县|