引用的字面意思就是将字符串用双引号括起来. 它的作用就是保护字符串中的特殊字符不被shell或者shell脚本重新解释, 或者扩展.
引用变量
在一个双引号中通过直接使用变量名的方法来引用变量, 一般情况下都是没问题的. 这么做将阻止所有在引号中的特殊字符被重新解释 -- 包括变量名但是$,`(后置引用), 和\(转义符)除外. 保留$作为特殊字符的意义是为了能够在双引号中也能够正常的引用变量( "$variable" ), 也就是说, 这个变量将被它的值所取代.
使用双引号还能够阻止单词分割(word splitting).如果一个参数被双引号扩起来的话, 那么这个参数将认为是一个单元, 即使这个参数包含有空白, 那里面的单词也不会被分隔开.*在echo语句中, 只有在单词分割(word splitting)或者需要保留空白的时候, 才需要把参数用双引号括起来.
单引号(' ')操作与双引号基本一样, 但是不允许引用变量, 因为$的特殊意义被关闭了. 在单引号中,任何特殊字符都按照字面的意思进行解释, 除了'. 所以说单引号("全引用")是一种比双引号("部分引用")更严格的引用方法.
转义
转义是一种引用单个字符的方法.一个前面放上转义符(\)的字符就是告诉shell这个字符按照字面的意思进行解释, 换句话说, 就是这个字符失去了它的特殊含义.
echo和sed命令中使用
\n
表示新的一行
\r
表示回车
\t
表示水平制表符
\v
表示垂直制表符
\b
表示后退符
\a
表示"alert"(蜂鸣或者闪烁)
\0xx
转换为八进制的ASCII码, 等价于 0xx
\"
表示引号字面的意思
echo "hello" # hello echo "\"hello\", he said." # "hello, he said."
\$
表示$本身子面的含义(跟在\$后边的变量名将不能引用变量的值)
echo "\$variable01" # 结果是$variable01
\\
表示反斜线字面的意思