珀耳塞福建 发表于 2018-8-23 07:44:31

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]
查看完整版本: shell之exit