options.html

来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· HTML 代码 · 共 661 行

HTML
661
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD><TITLE>选项</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINKREL="HOME"TITLE="高级Bash脚本编程指南"HREF="index.html"><LINKREL="UP"TITLE="高级主题"HREF="part4.html"><LINKREL="PREVIOUS"TITLE="调试"HREF="debugging.html"><LINKREL="NEXT"TITLE="陷阱"HREF="gotchas.html"></HEAD><BODYCLASS="CHAPTER"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="debugging.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="gotchas.html"ACCESSKEY="N">下一页</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="CHAPTER"><H1><ANAME="OPTIONS"></A>30. 选项</H1><P><ANAME="OPTIONSREF"></A></P><P>选项用来更改shell和脚本的行为. </P><P><AHREF="internal.html#SETREF">set</A>命令用来打开脚本中的选项. 	你可以在脚本中任何你想让选项生效的地方插入<BCLASS="COMMAND">set	-o option-name</B>, 或者使用更简单的形式, <BCLASS="COMMAND">set	-option-abbrev</B>. 	这两种形式是等价的. </P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING">  1&nbsp;      #!/bin/bash  2&nbsp;  3&nbsp;      set -o verbose  4&nbsp;      # 打印出所有执行前的命令.   5&nbsp;      </PRE></FONT></TD></TR></TABLE></P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING">  1&nbsp;      #!/bin/bash  2&nbsp;  3&nbsp;      set -v  4&nbsp;      # 与上边的例子具有相同的效果.   5&nbsp;      </PRE></FONT></TD></TR></TABLE></P><DIVCLASS="NOTE"><P></P><TABLECLASS="NOTE"WIDTH="100%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="./images/note.gif"HSPACE="5"ALT="Note"></TD><TDALIGN="LEFT"VALIGN="TOP"><P>如果你想在脚本中<EM>禁用</EM>某个选项, 	可以使用<BCLASS="COMMAND">set +o option-name</B>或<BCLASS="COMMAND">set	+option-abbrev</B>. </P></TD></TR></TABLE></DIV><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING">  1&nbsp;      #!/bin/bash  2&nbsp;  3&nbsp;      set -o verbose  4&nbsp;      # 激活命令回显.   5&nbsp;      command  6&nbsp;      ...  7&nbsp;      command  8&nbsp;  9&nbsp;      set +o verbose 10&nbsp;      # 禁用命令回显.  11&nbsp;      command 12&nbsp;      # 没有命令回显了.  13&nbsp; 14&nbsp; 15&nbsp;      set -v 16&nbsp;      # 激活命令回显.  17&nbsp;      command 18&nbsp;      ... 19&nbsp;      command 20&nbsp; 21&nbsp;      set +v 22&nbsp;      # 禁用命令回显.  23&nbsp;      command 24&nbsp; 25&nbsp;      exit 0 26&nbsp;      </PRE></FONT></TD></TR></TABLE></P><P>还有另一种可以在脚本中启用选项的方法, 	那就是在脚本头部, 	<TTCLASS="REPLACEABLE"><I>#!</I></TT>的后边直接指定选项. </P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING">  1&nbsp;      #!/bin/bash -x  2&nbsp;      #  3&nbsp;      # 下边是脚本的主要内容.   4&nbsp;      </PRE></FONT></TD></TR></TABLE></P><P><ANAME="INVOCATIONOPTIONSREF"></A></P><P>也可以从命令行中打开脚本的选项. 	某些不能与<BCLASS="COMMAND">set</B>命令一起用的选项就可以使用这种方法来打开. 	<TTCLASS="REPLACEABLE"><I>-i</I></TT>就是其中之一, 	这个选项用来强制脚本以交互的方式运行. 	</P><P><KBDCLASS="USERINPUT">bash -v script-name</KBD></P><P><KBDCLASS="USERINPUT">bash -o verbose script-name</KBD></P><P>下表列出了一些有用的选项. 	它们都可以使用缩写的形式来指定(开头加一个破折号), 	也可以使用完整名字来指定(开头加上<EM>双</EM>破折号, 	或者使用<CODECLASS="OPTION">-o</CODE>选项来指定). </P><DIVCLASS="TABLE"><HR><ANAME="AEN15239"></A><P><B>表格 30-1. Bash选项</B></P><TABLEBORDER="1"CLASS="CALSTABLE"><COL><COL><COL><THEAD><TR><TH>缩写</TH><TH>名称</TH><TH>作用</TH></TR></THEAD><TBODY><TR><TD><ANAME="NOCLOBBERREF"></A><CODECLASS="OPTION">-C</CODE></TD><TD>noclobber</TD><TD>防止重定向时覆盖文件(可能会被<SPANCLASS="TOKEN">&#62;|</SPAN>覆盖)</TD></TR><TR><TD><CODECLASS="OPTION">-D</CODE></TD><TD>(none)</TD><TD>列出用双引号引用起来的, 以<SPANCLASS="TOKEN">$</SPAN>为前缀的字符串, 	      但是不执行脚本中的命令</TD></TR><TR><TD><CODECLASS="OPTION">-a</CODE></TD><TD>allexport</TD><TD>export(导出)所有定义过的变量</TD></TR><TR><TD><CODECLASS="OPTION">-b</CODE></TD><TD>notify</TD><TD>当后台运行的作业终止时, 给出通知(脚本中并不常见)</TD></TR><TR><TD><CODECLASS="OPTION">-c ...</CODE></TD><TD>(none)</TD><TD>从<BCLASS="COMMAND">...</B>中读取命令</TD></TR><TR><TD><CODECLASS="OPTION">-e</CODE></TD><TD>errexit</TD><TD>当脚本发生第一个错误时, 就退出脚本, 			  换种说法就是, 当一个命令返回非零值时, 			  就退出脚本(除了<AHREF="loops1.html#UNTILLOOPREF">until</A>或<AHREF="loops1.html#WHILELOOPREF">while loops</A>, <AHREF="testconstructs.html#TESTCONSTRUCTS1">if-tests</A>, <AHREF="list-cons.html#LCONS1">list constructs</A>)</TD></TR><TR><TD><CODECLASS="OPTION">-f</CODE></TD><TD>noglob</TD><TD>禁用文件名扩展(就是禁用globbing)</TD></TR><TR><TD><CODECLASS="OPTION">-i</CODE></TD><TD>interactive</TD><TD>让脚本以<EM>交互</EM>模式运行</TD></TR><TR><TD><CODECLASS="OPTION">-n</CODE></TD><TD>noexec</TD><TD>从脚本中读取命令, 但是不执行它们(做语法检查)</TD></TR><TR><TD><CODECLASS="OPTION">-o Option-Name</CODE></TD><TD>(none)</TD><TD>调用<EM>Option-Name</EM>选项</TD></TR><TR><TD><CODECLASS="OPTION">-o posix</CODE></TD><TD>POSIX</TD><TD>修改Bash或被调用脚本的行为, 			  使其符合<AHREF="sha-bang.html#POSIX2REF">POSIX</A>标准. 		</TD></TR><TR><TD><CODECLASS="OPTION">-p</CODE></TD><TD>privileged</TD><TD>以<SPANCLASS="QUOTE">"suid"</SPAN>身份来运行脚本(小心!)</TD></TR><TR><TD><CODECLASS="OPTION">-r</CODE></TD><TD>restricted</TD><TD>以<EM>受限</EM>模式来运行脚本(参考<AHREF="restricted-sh.html"> 21</A>). </TD></TR><TR><TD><CODECLASS="OPTION">-s</CODE></TD><TD>stdin</TD><TD>从<TTCLASS="FILENAME">stdin</TT>中读取命令</TD></TR><TR><TD><CODECLASS="OPTION">-t</CODE></TD><TD>(none)</TD><TD>执行完第一个命令之后, 就退出</TD></TR><TR><TD><CODECLASS="OPTION">-u</CODE></TD><TD>nounset</TD><TD>如果尝试使用了未定义的变量, 就会输出一个错误消息, 		然后强制退出</TD></TR><TR><TD><CODECLASS="OPTION">-v</CODE></TD><TD>verbose</TD><TD>在执行每个命令之前, 把每个命令打印到<TTCLASS="FILENAME">stdout</TT>上</TD></TR><TR><TD><CODECLASS="OPTION">-x</CODE></TD><TD>xtrace</TD><TD>与<CODECLASS="OPTION">-v</CODE>选项类似, 但是会打印完整命令</TD></TR><TR><TD><CODECLASS="OPTION">-</CODE></TD><TD>(none)</TD><TD>选项结束标志. 后面的参数为<AHREF="internalvariables.html#POSPARAMREF">位置参数</A>. </TD></TR><TR><TD><CODECLASS="OPTION">--</CODE></TD><TD>(none)</TD><TD>unset(释放)位置参数. 		如果指定了参数列表(<CODECLASS="VARNAME">-- arg1 arg2</CODE>), 		那么位置参数将会依次设置到参数列表中. </TD></TR></TBODY></TABLE><HR></DIV></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="debugging.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">首页</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="gotchas.html"ACCESSKEY="N">下一页</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">调试</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="part4.html"ACCESSKEY="U">上一级</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">陷阱</TD></TR></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?