BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版

源代码在线查看: exit-status.html

软件大小: 1324 K
上传用户: starsrain1
关键词: Shell SHELL BASH 编程
下载地址: 免注册下载 普通下载 VIP

相关代码

												>				>				>退出和退出状态码				>				NAME="GENERATOR"				CONTENT="Modular DocBook HTML Stylesheet Version 1.79">				REL="HOME"				TITLE="高级Bash脚本编程指南"				HREF="index.html">				REL="UP"				TITLE="基本"				HREF="part2.html">				REL="PREVIOUS"				TITLE="转义"				HREF="escapingsection.html">				REL="NEXT"				TITLE="条件判断"				HREF="tests.html">				>				CLASS="CHAPTER"				BGCOLOR="#FFFFFF"				TEXT="#000000"				LINK="#0000FF"				VLINK="#840084"				ALINK="#0000FF"				>				CLASS="NAVHEADER"				>				SUMMARY="Header navigation table"				WIDTH="100%"				BORDER="0"				CELLPADDING="0"				CELLSPACING="0"				>				>				COLSPAN="3"				ALIGN="center"				>高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍				>				>				>				WIDTH="10%"				ALIGN="left"				VALIGN="bottom"				>				HREF="escapingsection.html"				ACCESSKEY="P"				>前一页				>				>				WIDTH="80%"				ALIGN="center"				VALIGN="bottom"				>				>				WIDTH="10%"				ALIGN="right"				VALIGN="bottom"				>				HREF="tests.html"				ACCESSKEY="N"				>下一页				>				>				>				>				ALIGN="LEFT"				WIDTH="100%">				>				CLASS="CHAPTER"				>				>				NAME="EXIT-STATUS"				>				>6. 退出和退出状态码				>				BORDER="0"				WIDTH="100%"				CELLSPACING="0"				CELLPADDING="0"				CLASS="EPIGRAPH"				>				>				WIDTH="45%"				> 				>				WIDTH="45%"				ALIGN="LEFT"				VALIGN="TOP"				>				>				>				>...在Bourne shell中有许多黑暗的角落, 但是人们也会利用它们.				>				>				>				>				>				>				WIDTH="45%"				> 				>				WIDTH="45%"				ALIGN="RIGHT"				VALIGN="TOP"				>				>				CLASS="ATTRIBUTION"				>Chet Ramey				>				>				>				>				>				>				NAME="EXITCOMMANDREF"				>				> 									CLASS="COMMAND"				>	  					  					  exit									> 					被用来结束一个脚本, 					就像在				>C				>语言中一样. 它也返回一个值, 					并且这个值会传递给脚本的父进程, 父进程会使用这个值做下一步的处理. 				>				>				NAME="EXITSTATUSREF"				>				>每个命令都会返回一个									CLASS="FIRSTTERM"				>	  					  退出状态码									> 					(有时候也被称为									CLASS="FIRSTTERM"				>	  					  返回状态				  				>). 成功的命令返回				CLASS="RETURNVALUE"				>0				>, 				  而不成功的命令返回				CLASS="RETURNVALUE"				>非零				>值, 非零值通常都被解释成一个错误码. 				  行为良好的UNIX命令, 程序, 和工具都会返回				CLASS="RETURNVALUE"				>0				>作为退出码来表示成功, 				  虽然偶尔也会有例外. 				>				>同样的, 脚本中的函数和脚本本身也会返回退出状态码. 						  在脚本或者是脚本函数中执行的最后的命令会决定退出状态码.						  在脚本中, 				CLASS="USERINPUT"				>exit 				CLASS="REPLACEABLE"				>				>nnn				>				>				>命令将会把				CLASS="RETURNVALUE"				>			  				CLASS="REPLACEABLE"				>				>nnn				>				>				>退出码传递给shell(				CLASS="RETURNVALUE"				>			  				CLASS="REPLACEABLE"				>				>nnn				>				>				>必须是十进制数, 						 范围必须是				CLASS="RETURNVALUE"				>0				> -									CLASS="RETURNVALUE"				>255				>).				>				CLASS="NOTE"				>				>				>				CLASS="NOTE"				WIDTH="100%"				BORDER="0"				>				>				WIDTH="25"				ALIGN="CENTER"				VALIGN="TOP"				>				SRC="./images/note.gif"				HSPACE="5"				ALT="Note">				>				ALIGN="LEFT"				VALIGN="TOP"				>				>当脚本以不带参数的				CLASS="COMMAND"				>exit				>命令来结束时, 							  脚本的退出状态码就由脚本中最后执行的命令来决定(就是				CLASS="COMMAND"				>exit				>之前的命令).				>				>				BORDER="0"				BGCOLOR="#E0E0E0"				WIDTH="100%"				>				>				>				COLOR="#000000"				>				CLASS="PROGRAMLISTING"				>  1 #!/bin/bash				  2 				  3 COMMAND_1				  4 				  5 . . .				  6 				  7 # 将以最后的命令来决定退出状态码.				  8 COMMAND_LAST				  9 				 10 exit				>				>				>				>				>				>				>不带参数的				CLASS="COMMAND"				>exit				>命令与						  				CLASS="COMMAND"				>exit $?				>的效果是一样的, 						  甚至脚本的结尾不写				CLASS="COMMAND"				>exit				>, 也与前两者的效果相同. 				>				>				BORDER="0"				BGCOLOR="#E0E0E0"				WIDTH="100%"				>				>				>				COLOR="#000000"				>				CLASS="PROGRAMLISTING"				>  1 #!/bin/bash				  2 				  3 COMMAND_1				  4 				  5 . . .				  6 				  7 # 将以最后的命令来决定退出状态码.				  8 COMMAND_LAST				  9 				 10 exit $?				>				>				>				>				>				>				>				BORDER="0"				BGCOLOR="#E0E0E0"				WIDTH="100%"				>				>				>				COLOR="#000000"				>				CLASS="PROGRAMLISTING"				>  1 #!/bin/bash				  2 				  3 COMMAND1				  4 				  5 . . . 				  6 				  7 # 将以最后的命令来决定退出状态码.				  8 COMMAND_LAST				>				>				>				>				>				>				>				>				>				>				>				NAME="EXSREF"				>				>				>				>					CLASS="VARNAME"				>	    $?				>保存了最后所执行的命令的退出状态码. 					    当函数返回之后, 					    				CLASS="VARNAME"				>$?				>保存函数中最后所执行的命令的退出状态码. 						这就是bash对函数				CLASS="QUOTE"				>"返回值"				>的处理方法. 						当一个脚本退出, 				CLASS="VARNAME"				>$?				>保存了脚本的退出状态码, 					    这个退出状态码也就是脚本中最后一个执行命令的退出状态码. 					    一般情况下, 				CLASS="USERINPUT"				>0				>表示成功, 					    在范围				CLASS="RETURNVALUE"				>1 - 255				>的整数表示错误. 				>				CLASS="EXAMPLE"				>				NAME="EX5"				>				>				>				>例子 6-1. 退出/退出状态码				>				>				BORDER="0"				BGCOLOR="#E0E0E0"				WIDTH="100%"				>				>				>				COLOR="#000000"				>				CLASS="PROGRAMLISTING"				>  1 #!/bin/bash				  2 				  3 echo hello				  4 echo $?    # 退出状态为0, 因为命令执行成功.				  5 				  6 lskdf      # 无效命令.				  7 echo $?    # 非零的退出状态, 因为命令执行失败.				  8 				  9 echo				 10 				 11 exit 113   # 返回113退出状态给shell.				 12            # 为了验证这个结果, 可以在脚本结束的地方使用"echo $?". 				 13 				 14 #  一般的, 'exit 0' 表示成功,				 15 #+ 而一个非零的退出码表示一个错误, 或者是反常的条件.				>				>				>				>				>				>				>				HREF="internalvariables.html#XSTATVARREF"				>$?				>用于测试脚本中的命令结果的时候, 往往显得特别有用(见				HREF="filearchiv.html#FILECOMP"				>例子 12-32				>和				HREF="textproc.html#LOOKUP"				>例子 12-17				>).				>				CLASS="NOTE"				>				>				>				CLASS="NOTE"				WIDTH="100%"				BORDER="0"				>				>				WIDTH="25"				ALIGN="CENTER"				VALIGN="TOP"				>				SRC="./images/note.gif"				HSPACE="5"				ALT="Note">				>				ALIGN="LEFT"				VALIGN="TOP"				>				>				HREF="special-chars.html#NOTREF"				>!				>, 逻辑						  				CLASS="QUOTE"				>"非"				>操作符, 将会反转命令或条件测试的结果, 						  并且这会影响				HREF="exit-status.html#EXITSTATUSREF"				>退出状态码				>.													CLASS="EXAMPLE"				>				NAME="NEGCOND"				>				>				>				>例子 6-2. 反转一个条件的用法				CLASS="TOKEN"				>!				>				>				>				BORDER="0"				BGCOLOR="#E0E0E0"				WIDTH="100%"				>				>				>				COLOR="#000000"				>				CLASS="PROGRAMLISTING"				>  1 true  # "true" 是内建命令.				  2 echo "exit status of \"true\" = $?"     # 0				  3 				  4 ! true				  5 echo "exit status of \"! true\" = $?"   # 1				  6 # 注意: "!" 需要一个空格.				  7 #    !true   将导致"command not found"错误				  8 #				  9 # 如果一个命令以'!'开头, 那么会启用Bash的历史机制. 				 10 				 11 true				 12 !true				 13 # 这次就没有错误了, 也没有反转结果.				 14 # 它只是重复了之前的命令(true).				 15 				 16 # 感谢, Stephane Chazelas和Kristopher Newsome.				>				>				>				>				>				>								      				>				>				>				>				>				CLASS="CAUTION"				>				>				>				CLASS="CAUTION"				WIDTH="100%"				BORDER="0"				>				>				WIDTH="25"				ALIGN="CENTER"				VALIGN="TOP"				>				SRC="./images/caution.gif"				HSPACE="5"				ALT="Caution">				>				ALIGN="LEFT"				VALIGN="TOP"				>				>特定的退出状态码具有				HREF="exitcodes.html#EXITCODESREF"				>保留含义				>, 							 所以用户不应该在脚本中指定它. 				>				>				>				>				>				>				CLASS="NAVFOOTER"				>				ALIGN="LEFT"				WIDTH="100%">				SUMMARY="Footer navigation table"				WIDTH="100%"				BORDER="0"				CELLPADDING="0"				CELLSPACING="0"				>				>				WIDTH="33%"				ALIGN="left"				VALIGN="top"				>				HREF="escapingsection.html"				ACCESSKEY="P"				>前一页				>				>				WIDTH="34%"				ALIGN="center"				VALIGN="top"				>				HREF="index.html"				ACCESSKEY="H"				>首页				>				>				WIDTH="33%"				ALIGN="right"				VALIGN="top"				>				HREF="tests.html"				ACCESSKEY="N"				>下一页				>				>				>				>				WIDTH="33%"				ALIGN="left"				VALIGN="top"				>转义				>				WIDTH="34%"				ALIGN="center"				VALIGN="top"				>				HREF="part2.html"				ACCESSKEY="U"				>上一级				>				>				WIDTH="33%"				ALIGN="right"				VALIGN="top"				>条件判断				>				>				>				>				>				>			

相关资源