📄 options.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML><HEAD><TITLE>Options</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="Advanced Bash-Scripting Guide"HREF="index.html"><LINKREL="UP"TITLE="Advanced Topics"HREF="part5.html"><LINKREL="PREVIOUS"TITLE="Debugging"HREF="debugging.html"><LINKREL="NEXT"TITLE="Gotchas"HREF="gotchas.html"><METAHTTP-EQUIV="Content-Style-Type"CONTENT="text/css"><LINKREL="stylesheet"HREF="common/kde-common.css"TYPE="text/css"><METAHTTP-EQUIV="Content-Type"CONTENT="text/html; charset=iso-8859-1"><METAHTTP-EQUIV="Content-Language"CONTENT="en"><LINKREL="stylesheet"HREF="common/kde-localised.css"TYPE="text/css"TITLE="KDE-English"><LINKREL="stylesheet"HREF="common/kde-default.css"TYPE="text/css"TITLE="KDE-Default"></HEAD><BODYCLASS="CHAPTER"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#AA0000"VLINK="#AA0055"ALINK="#AA0000"STYLE="font-family: sans-serif;"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Advanced Bash-Scripting Guide: An in-depth exploration of the art of shell scripting</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="debugging.html"ACCESSKEY="P">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="gotchas.html"ACCESSKEY="N">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="CHAPTER"><H1><ANAME="OPTIONS"></A>Chapter 30. Options</H1><P><ANAME="OPTIONSREF"></A></P><P>Options are settings that change shell and/or script behavior.</P><P>The <AHREF="internal.html#SETREF">set</A> command enables options within a script. At the point in the script where you want the options to take effect, use <BCLASS="COMMAND">set -o option-name</B> or, in short form, <BCLASS="COMMAND">set -option-abbrev</B>. These two forms are equivalent.</P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 3 set -o verbose 4 # Echoes all commands before executing. 5 </PRE></TD></TR></TABLE></P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 3 set -v 4 # Exact same effect as above. 5 </PRE></TD></TR></TABLE></P><DIVCLASS="NOTE"><TABLECLASS="NOTE"WIDTH="100%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="common/note.png"HSPACE="5"ALT="Note"></TD><TDALIGN="LEFT"VALIGN="TOP"><P>To <ICLASS="FIRSTTERM">disable</I> an option within a script, use <BCLASS="COMMAND">set +o option-name</B> or <BCLASS="COMMAND">set +option-abbrev</B>.</P></TD></TR></TABLE></DIV><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 3 set -o verbose 4 # Command echoing on. 5 command 6 ... 7 command 8 9 set +o verbose 10 # Command echoing off. 11 command 12 # Not echoed. 13 14 15 set -v 16 # Command echoing on. 17 command 18 ... 19 command 20 21 set +v 22 # Command echoing off. 23 command 24 25 exit 0 26 </PRE></TD></TR></TABLE></P><P>An alternate method of enabling options in a script is to specify them immediately following the <TTCLASS="REPLACEABLE"><I>#!</I></TT> script header.</P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash -x 2 # 3 # Body of script follows. 4 </PRE></TD></TR></TABLE></P><P><ANAME="INVOCATIONOPTIONSREF"></A></P><P>It is also possible to enable script options from the command line. Some options that will not work with <BCLASS="COMMAND">set</B> are available this way. Among these are <TTCLASS="REPLACEABLE"><I>-i</I></TT>, force script to run interactive.</P><P><TTCLASS="USERINPUT"><B>bash -v script-name</B></TT></P><P><TTCLASS="USERINPUT"><B>bash -o verbose script-name</B></TT></P><P>The following is a listing of some useful options. They may be specified in either abbreviated form (preceded by a single dash) or by complete name (preceded by a <SPANCLASS="emphasis"><ICLASS="EMPHASIS">double</I></SPAN> dash or by <TTCLASS="OPTION">-o</TT>).</P><P><ANAME="OPTIONSTABLE"></A></P><DIVCLASS="TABLE"><HR><ANAME="AEN17941"></A><P><B>Table 30-1. Bash options</B></P><TABLEBORDER="1"CLASS="CALSTABLE"><THEAD><TR><THALIGN="LEFT"VALIGN="TOP">Abbreviation</TH><THALIGN="LEFT"VALIGN="TOP">Name</TH><THALIGN="LEFT"VALIGN="TOP">Effect</TH></TR></THEAD><TBODY><TR><TDALIGN="LEFT"VALIGN="TOP"><ANAME="NOCLOBBERREF"></A><TTCLASS="OPTION">-C</TT></TD><TDALIGN="LEFT"VALIGN="TOP">noclobber</TD><TDALIGN="LEFT"VALIGN="TOP">Prevent overwriting of files by redirection (may be overridden by <SPANCLASS="TOKEN">>|</SPAN>)</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-D</TT></TD><TDALIGN="LEFT"VALIGN="TOP">(none)</TD><TDALIGN="LEFT"VALIGN="TOP">List double-quoted strings prefixed by <SPANCLASS="TOKEN">$</SPAN>, but do not execute commands in script</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-a</TT></TD><TDALIGN="LEFT"VALIGN="TOP">allexport</TD><TDALIGN="LEFT"VALIGN="TOP">Export all defined variables</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-b</TT></TD><TDALIGN="LEFT"VALIGN="TOP">notify</TD><TDALIGN="LEFT"VALIGN="TOP">Notify when jobs running in background terminate (not of much use in a script)</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-c ...</TT></TD><TDALIGN="LEFT"VALIGN="TOP">(none)</TD><TDALIGN="LEFT"VALIGN="TOP">Read commands from <BCLASS="COMMAND">...</B></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-e</TT></TD><TDALIGN="LEFT"VALIGN="TOP">errexit</TD><TDALIGN="LEFT"VALIGN="TOP">Abort script at first error, when a command exits with non-zero status (except in <AHREF="loops.html#UNTILLOOPREF">until</A> or <AHREF="loops.html#WHILELOOPREF">while loops</A>, <AHREF="tests.html#TESTCONSTRUCTS1">if-tests</A>, <AHREF="list-cons.html#LCONS1">list constructs</A>)</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-f</TT></TD><TDALIGN="LEFT"VALIGN="TOP">noglob</TD><TDALIGN="LEFT"VALIGN="TOP">Filename expansion (globbing) disabled</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-i</TT></TD><TDALIGN="LEFT"VALIGN="TOP">interactive</TD><TDALIGN="LEFT"VALIGN="TOP">Script runs in <ICLASS="FIRSTTERM">interactive</I> mode</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-n</TT></TD><TDALIGN="LEFT"VALIGN="TOP">noexec</TD><TDALIGN="LEFT"VALIGN="TOP">Read commands in script, but do not execute them (syntax check)</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-o Option-Name</TT></TD><TDALIGN="LEFT"VALIGN="TOP">(none)</TD><TDALIGN="LEFT"VALIGN="TOP">Invoke the <ICLASS="FIRSTTERM">Option-Name</I> option</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-o posix</TT></TD><TDALIGN="LEFT"VALIGN="TOP">POSIX</TD><TDALIGN="LEFT"VALIGN="TOP">Change the behavior of Bash, or invoked script, to conform to <AHREF="sha-bang.html#POSIX2REF">POSIX</A> standard.</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-o pipefail</TT></TD><TDALIGN="LEFT"VALIGN="TOP">pipe failure</TD><TDALIGN="LEFT"VALIGN="TOP">Causes a pipeline to return the <AHREF="exit-status.html#EXITSTATUSREF">exit status</A> of the last command in the pipe that returned a non-zero return value.</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-p</TT></TD><TDALIGN="LEFT"VALIGN="TOP">privileged</TD><TDALIGN="LEFT"VALIGN="TOP">Script runs as <SPANCLASS="QUOTE">"suid"</SPAN> (caution!)</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-r</TT></TD><TDALIGN="LEFT"VALIGN="TOP">restricted</TD><TDALIGN="LEFT"VALIGN="TOP">Script runs in <ICLASS="FIRSTTERM">restricted</I> mode (see <AHREF="restricted-sh.html">Chapter 21</A>).</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-s</TT></TD><TDALIGN="LEFT"VALIGN="TOP">stdin</TD><TDALIGN="LEFT"VALIGN="TOP">Read commands from <TTCLASS="FILENAME">stdin</TT></TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-t</TT></TD><TDALIGN="LEFT"VALIGN="TOP">(none)</TD><TDALIGN="LEFT"VALIGN="TOP">Exit after first command</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-u</TT></TD><TDALIGN="LEFT"VALIGN="TOP">nounset</TD><TDALIGN="LEFT"VALIGN="TOP">Attempt to use undefined variable outputs error message, and forces an exit</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-v</TT></TD><TDALIGN="LEFT"VALIGN="TOP">verbose</TD><TDALIGN="LEFT"VALIGN="TOP">Print each command to <TTCLASS="FILENAME">stdout</TT> before executing it</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-x</TT></TD><TDALIGN="LEFT"VALIGN="TOP">xtrace</TD><TDALIGN="LEFT"VALIGN="TOP">Similar to <TTCLASS="OPTION">-v</TT>, but expands commands</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">-</TT></TD><TDALIGN="LEFT"VALIGN="TOP">(none)</TD><TDALIGN="LEFT"VALIGN="TOP">End of options flag. All other arguments are <AHREF="variables2.html#POSPARAMREF">positional parameters</A>.</TD></TR><TR><TDALIGN="LEFT"VALIGN="TOP"><TTCLASS="OPTION">--</TT></TD><TDALIGN="LEFT"VALIGN="TOP">(none)</TD><TDALIGN="LEFT"VALIGN="TOP">Unset positional parameters. If arguments given (<TTCLASS="PARAMETER"><I>-- arg1 arg2</I></TT>), positional parameters set to arguments.</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">Prev</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="gotchas.html"ACCESSKEY="N">Next</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">Debugging</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="part5.html"ACCESSKEY="U">Up</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">Gotchas</TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -