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 #!/bin/bash 2 3 set -o verbose 4 # 打印出所有执行前的命令. 5 </PRE></FONT></TD></TR></TABLE></P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 3 set -v 4 # 与上边的例子具有相同的效果. 5 </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 #!/bin/bash 2 3 set -o verbose 4 # 激活命令回显. 5 command 6 ... 7 command 8 9 set +o verbose 10 # 禁用命令回显. 11 command 12 # 没有命令回显了. 13 14 15 set -v 16 # 激活命令回显. 17 command 18 ... 19 command 20 21 set +v 22 # 禁用命令回显. 23 command 24 25 exit 0 26 </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 #!/bin/bash -x 2 # 3 # 下边是脚本的主要内容. 4 </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">>|</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 + -
显示快捷键?