quoting.html
来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· HTML 代码 · 共 396 行
HTML
396 行
<!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="part2.html"><LINKREL="PREVIOUS"TITLE="特殊的变量类型"HREF="othertypesv.html"><LINKREL="NEXT"TITLE="引用变量"HREF="quotingvar.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="othertypesv.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="quotingvar.html"ACCESSKEY="N">下一页</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="CHAPTER"><H1><ANAME="QUOTING"></A>5. 引用</H1><DIVCLASS="TOC"><DL><DT><B>目录</B></DT><DT>5.1. <AHREF="quotingvar.html">引用变量</A></DT><DT>5.2. <AHREF="escapingsection.html">转义</A></DT></DL></DIV><P><ANAME="QUOTINGREF"></A></P><P>引用的字面意思就是将字符串用双引号括起来. 它的作用就是保护字符串中的<AHREF="special-chars.html#SCHARLIST1">特殊字符</A>不被shell或者shell脚本重新解释, 或者扩展. (我们这里所说的<SPANCLASS="QUOTE">"特殊"</SPAN>指的是一些字符在shell中具有的特殊意义, 而不是字符的字面意思, 比如<SPANCLASS="TOKEN">通配符</SPAN> -- <SPANCLASS="TOKEN">*</SPAN>.)</P><P> <TABLEBORDER="1"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="SCREEN"><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">ls -l [Vv]*</KBD><SAMPCLASS="COMPUTEROUTPUT">-rw-rw-r-- 1 bozo bozo 324 Apr 2 15:05 VIEWDATA.BAT -rw-rw-r-- 1 bozo bozo 507 May 4 14:25 vartrace.sh -rw-rw-r-- 1 bozo bozo 539 Apr 14 17:11 viewdata.sh</SAMP><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">ls -l '[Vv]*'</KBD><SAMPCLASS="COMPUTEROUTPUT">ls: [Vv]*: No such file or directory</SAMP></PRE></FONT></TD></TR></TABLE> </P><TABLECLASS="SIDEBAR"BORDER="1"CELLPADDING="5"><TR><TD><DIVCLASS="SIDEBAR"><P></P><ANAME="AEN2059"></A><P>在日常的演讲和写作中, 当我们<SPANCLASS="QUOTE">"引用"</SPAN>一个短语的时候, 这意味着这个短语被区分以示它有特别的含义. 但是在Bash脚本中, 当我们<ICLASS="FIRSTTERM">引用</I>一个字符串的时候, 我们区分这个字符串是为了保护它的<EM>字面</EM>含义. </P><P></P></DIV></TD></TR></TABLE><P>某些程序和工具能够重新解释或者扩展被引用的特殊字符. 引用的一个重要作用就是保护命令行参数不被shell解释, 但是还是能够让正在调用的程序来扩展它. </P><P> <TABLEBORDER="1"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="SCREEN"><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">grep '[Ff]irst' *.txt</KBD><SAMPCLASS="COMPUTEROUTPUT">file1.txt:This is the first line of file1.txt. file2.txt:This is the First line of file2.txt.</SAMP></PRE></FONT></TD></TR></TABLE> </P><P>注意一下未引用的 <KBDCLASS="USERINPUT">grep [Ff]irst *.txt</KBD> 在Bash shell下的行为. <ANAME="AEN2072"HREF="#FTN.AEN2072"><SPANCLASS="footnote">[1]</SPAN></A> </P><P>引用还可以改掉<AHREF="internal.html#ECHOREF">echo's</A>不换行的<SPANCLASS="QUOTE">"毛病"</SPAN>. </P><P> <TABLEBORDER="1"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="SCREEN"><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">echo $(ls -l)</KBD><SAMPCLASS="COMPUTEROUTPUT">total 8 -rw-rw-r-- 1 bozo bozo 130 Aug 21 12:57 t222.sh -rw-rw-r-- 1 bozo bozo 78 Aug 21 12:57 t71.sh</SAMP><SAMPCLASS="PROMPT">bash$ </SAMP><KBDCLASS="USERINPUT">echo "$(ls -l)"</KBD><SAMPCLASS="COMPUTEROUTPUT">total 8 -rw-rw-r-- 1 bozo bozo 130 Aug 21 12:57 t222.sh -rw-rw-r-- 1 bozo bozo 78 Aug 21 12:57 t71.sh</SAMP></PRE></FONT></TD></TR></TABLE> </P></DIV><H3CLASS="FOOTNOTES">注意事项</H3><TABLEBORDER="0"CLASS="FOOTNOTES"WIDTH="100%"><TR><TDALIGN="LEFT"VALIGN="TOP"WIDTH="5%"><ANAME="FTN.AEN2072"HREF="quoting.html#AEN2072"><SPANCLASS="footnote">[1]</SPAN></A></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="95%"><P>除非正好当前工作目录下有一个名字为 <TTCLASS="FILENAME">first</TT>的文件. 然而这是<EM>引用的</EM>另一个原因. (感谢, Harald Koenig, 指出这一点. </P></TD></TR></TABLE><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="othertypesv.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="quotingvar.html"ACCESSKEY="N">下一页</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">特殊的变量类型</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="part2.html"ACCESSKEY="U">上一级</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">引用变量</TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?