shell 学习三十七天----引用
引用
案例,如果我想输出一个星号 (*)
,使用 echo
如何做? echo *
这是肯定不行的,需要将 *
转移,即:echo \*
这样就引出了引用的概念。所为引用,是用来防止 shell 将某些你想要的东西解释成不同的意义。如果你希望某些可能被 shell 视为个别参数的东西保持为单个参数,这时你就必须将其引用。
引用的三种方式:
- 反斜杠转义
- 字符前置反斜杠
(\)
,用来告知 shell 该字符即为其字面上的意义。
- 字符前置反斜杠
-
单引号
-
单引号
('...')
强制 shell 将一对引号之间的所有字符都看做其字面上的意义。shell 脚本会删除这两个引号,只单独留下被括起来的完整文字内容:命令:echo 'here are some character * ? ` $ \' 输出:here are some character * ? ` $ \ 不能再一个单引号引用的字符串里再内嵌一个单引号。即使是反斜杠,在单引号里也没有特殊意义 (某些系统里,像 echo ‘A\tB’这样的命令看起来像是 shell 特别的处理反斜杠,其实不然,这是 echo 命令本身有特殊的处理方式)```
- 如需混用单引号和双引号,可以小心的使用反斜杠转义以及不同引用字符串的连接来做到:
命令:echo 'he said"how'\''s tricks?"' 输出:he said "how's tricks?" 命令”echo "she replied ,\"movin'along\"" 输出:she replied ,"movin' along" 不管怎么处理,这种结合方式永远是很难阅读的。
-
- 双引号
- 双引号
('...')
就像单引号那样,将括起来的文字视为单一字符串。只不过,双引号会确切的处理括起来文字中的转义字符和变量,算术,命令替换:x=hahaha echo “$x” 输出:hahaha
- 在双引号里,字符 $,",' 与 \,如需用到字面上的意义,都必须前置 \。任何其他字符前面的反斜杠是不带特殊意义的。序列
\-newline
会完全的被删除,就好像是用在脚本里的正文中一样。单引号被括在双引号里时就无特殊意义了,他们不必承兑,也不许转移。命令:echo "hahah'" 输出:hahah'
- 双引号
一般来说,使用单引号的时机是希望完全不处理的地方。否则,当希望将多个单词视为单一字符串,但又需要 shell 为你做些事情,此时使用双引号,例如将一个变量值与另一个变量值连在一起:
oldvar="$oldvar $newvar"
上一篇: shell 学习第三十...
下一篇: shell 学习第三十...