shell之exit
概念:return value(返回值)我们在shell下执行的每一个command 或 function ,在结束的时候都会传回父行程一个值,这个值成为return value。
在shell下可以用 $? 这个变量得到“最新”的一个 return value,即刚结束的那个形成传回的值。
Return Value(RV) 的取值为 0-255 之间,由程序(或script)的作者自行定义(可以方便作者对错误信息的判断):
·若在script里,用exit RV 来指定其值,若没指定,在结束时以最后一道命令之 RV 为值。
·若在function 里, 则用return RV 来代替 exit RV 即可。
Return Value的作用,是用来判断形成的退出状态(exit status),只有两种:
·0 为“真” (true)
·非0 为 “假” (false)
eg:
$ sl
-bash: sl: command not found
$ echo $?
127
$ ls
initialize.sh pulse-PKdhtXMmr18n vmware-root-3988619643
keyring-eUQfmb run_upgrader.sh VMwareTools-9.6.1-1378637.tar.gz
manifest.txt virtual-root.ivE4zuvmware-tools-upgrader-32
orbit-gdm virtual-root.o2HNfDvmware-tools-upgrader-64
orbit-root vmware-config0 xdg-screensaver-root--0
pulse-2WdowaWngmx0VMwareDnD
pulse-cDAZIwTYQ5HUvmware-root
$ echo $?
0
$ sl
-bash: sl: command not found
$ echo $?
127
$ echo $?
0
第一段代码比较好理解,sl 是没有这个command的,所以 echo $? 的结果为127(非0),ls 该command 执行成功,返回值为0.
第二段代码,sl command 同样理解,对于第二个echo $? ,想回我们刚开始所提到的“我们在shell下执行每一个command都会有一个return value”,所以第二个 echo $? 得到的“0” 是第一个 echo $? 的return value。
——选自《shell十三问》
页:
[1]