波波无奇 發表於 2023-9-18 00:00:00

详解Linux中关于引号的那些事

<p>
        本文详细的给大家介绍了关于linux中引号的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:</p>
<p>
        <span><strong>引号</strong></span></p>
<p>
        我们将把编写脚本的事情暂时搁在一边,然后来讨论一些,我们一直在用的,但是没有解释的东西。引号在这一节里面,我们会讲述引号。引号有两个作用:</p>
<ul>
<li>
                控制字符替换 和</li>
        <li>
                执行将单词包含在一起的功能</li>
</ul>
<p>
        我们已经使用过引号。在我们的脚本里面,将文本信息赋值给常量的赋值操作就使用了引号:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/01323e36ecd3910d46d807196d29e950.jpg"></p>
<p>
        在上面这个例子中,文本信息是被双引号包括住的。我们使用双引号的原因是---我们要把所有单词包括住,当作一个整体来对待。如果我们没有使用引号,那么bash解释器,就会将所有位于第一个单词后面的单词,解释为其他的命令(第一个单词被解释为命令)。</p>
<p>
        尝试一下运行下面的命令,看看有什么效果出来:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/5cede585b4f78d105e79859ef17ecf52.jpg"></p>
<p>
        <span><strong>单引号和双引号 </strong></span></p>
<p>
        shell解释器可以识别双引号和单引号。 下面的复制表达式效果是等价的:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/7d37818ef5aa205a660896b6d9842978.jpg"></p>
<p>
        然而,在双引号和单引号之间存在一个重要的差别。 单引号,在字符替换方面有限制。 正如我们在上一节所看到的内容一样,你可以将一个变量放在双引号里面,而shell解释器依然会对变量执行字符替换的操作。</p>
<p>
        我们可以通过使用<code>echo</code>命令来查看这种效果:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/573fdbd060827556871ef660a4d3bef9.jpg"></p>
<p>
        如果我们将上述的双引号改为单引号,那么,行为将会改变:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/cbb01ba0c3255ee422ead9e37c75eac3.jpg"></p>
<p>
        双引号并没有限制---以"$"开头的变量的字符替换,不过,它的确对通配符的扩展效果进行了限制。</p>
<p>
        比如,下面这个例子:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/36dcab5ed9670be4c447675ffe9d3940.jpg"></p>
<p>
        <span><strong>引用单个字符 </strong></span></p>
<p>
        还有另外一种引用字符你会碰到的。 它就是反斜杠。the backslash tells 反斜杠告诉shell解释器忽略反斜杠符后面的第一个字符。比如:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/f297a7e675bc2d368d7155f09191c4d4.jpg"></p>
<p>
        通过使用反斜杠符,shell解释器忽略了对"$"符号进行解释。既然shell已经忽略了"$",那么,shell解释器也就不会对<code>$hostname</code>执行字符替换了。</p>
<p>
        下面,给出一个更有用例子:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/ab08a0d5307d6f7f93730eef18b9f0a4.jpg"></p>
<p>
        正如你所看到的,通过使用反斜杠符号,我们可以将双引号包含在文本里面。</p>
<p>
        <span><strong>反斜杠的其他使用技巧</strong></span></p>
<p>
        如果,你阅读过任何软件的使用手册,并且这手册是由gnu项目完成的,那么,你会发现,在软件的命令选项中,除了以一个下划线_加一个字母的形式出现之外,还有,以两个下划线加一个完整的单词的形式出现。例如,下面两个语句是等价的:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/99d14725e995ce0408c8f90595102983.jpg"></p>
<p>
        为什么在软件中,这两种形式都是支持的呢?短的那种形式,是专门为那些懒的输入员而设定的,而长的那种形式,是专门为写脚本而存在的。我有时候,是混合着使用上面的两种形式,然后,我发现采用长的命令选项有用,如果,我写了一个脚本,并且,我将在几个月后去阅读它。看到长的命令选项,有助于我理解这个命令选项是什么意思,从而省却我去查man手册的功夫。现在多敲几下键盘,会以后节省很多功夫。 这样,懒惰的原则就保持住了。</p>
<p>
        你有可能会疑虑,使用长的命令形式,会导致一个单独的命令变得很长。 为了与这个问题斗争,你可以使用反斜杠来让shell解释器忽略换行符号,正如下面的操作:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/5cc7b2075d9cdee4265c1f1fdbab295f.jpg"></p>
<p>
        这样使用反斜杠,可以让我们将每行的内容包含在一个单独的命令中。让这个技巧可以应用,要注意的地方:换行,必须在反斜杠后面马上出现(也就是,在输入了反斜杠之后,就必须换行了)。 如果,你将一个空格符放置在反斜杠后面,那么,空格符号会被忽略,而不是换行符被忽略。反斜杠符,也可以被用于,将特殊的符号插入到文本。special characters into our text. 这些符号,被叫做---转移字符,下面就有一些转移字符:</p>
<p>
         </p>
<table border="1" cellpadding="8"><tbody>
<tr>
<td>
                                <p>
                                        转义字符 .......................</p>
                        </td>
                        <td>
                                <p>
                                        名字</p>
                        </td>
                        <td>
                                <p>
                                        可能的用途</p>
                        </td>
                </tr>
<tr>
<td>
                                <p>
                                        n</p>
                        </td>
                        <td>
                                <p>
                                        换行符</p>
                        </td>
                        <td>
                                <p>
                                        添加空白行在文本中</p>
                        </td>
                </tr>
<tr>
<td>
                                <p>
                                        t</p>
                        </td>
                        <td>
                                <p>
                                        制表符</p>
                        </td>
                        <td>
                                <p>
                                        将水平制表符添加到文本中</p>
                        </td>
                </tr>
<tr>
<td>
                                <p>
                                        a</p>
                        </td>
                        <td>
                                <p>
                                        提醒</p>
                        </td>
                        <td>
                                <p>
                                        让你的终端发出嘟嘟声。</p>
                        </td>
                </tr>
<tr>
<td>
                                <p>
                                        \</p>
                        </td>
                        <td>
                                <p>
                                        反斜杠</p>
                        </td>
                        <td>
                                <p>
                                        插入一个反斜杠符</p>
                        </td>
                </tr>
<tr>
<td>
                                <p>
                                        f</p>
                        </td>
                        <td>
                                <p>
                                        formfeed</p>
                        </td>
                        <td>
                                <p>
                                        sending this to your printer ejects thepage</p>
                        </td>
                </tr>
</tbody></table>
<p>
         </p>
<p>
        转移字符的应用很常见。非常常见转移字符,这个想法,首先出现在c语言里面。编程语言今天,shell解释程序,c++,perl,python,awk,tcl和其他程序语言都使用了转移字符这个概念。通过使用echo命令的-e选项,我们将展示上述转移字符的应用:</p>
<p>
        <img title="详解Linux中关于引号的那些事" alt="详解Linux中关于引号的那些事" src="https://zhuji.jb51.net/uploads/img/202305/270468215a193239f63c16a1c85d74e3.jpg"></p>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
頁: [1]
查看完整版本: 详解Linux中关于引号的那些事