先了解下,在bash脚本中,有三种引号
1. 单引号 '
2. 双引号 "
3. 反引号 `
单引号
两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思.
双引号
两个双引号包围起来的字符串,部分特殊字符将起到它们的作用.
这些特殊字符有: 美元符$, 反斜杠/, 反引号, 感叹号!.
反引号
两个反引号包围起来的字符串,将作为命令来运行,
执行的输出结果作为该反引号的内容,称为命令替换,
它有另一种更好的写法: $(command)
我们来看几个例子,更直接的了解这三种引号的特性.
1. 美元符$在单、双引号中的表现: 在双引号中的$, 将发生变量引用, 而在单引号中的$, 将保留它的字面意思
代码如下:
igi@gentoo ~ $ echo '$HOME'
$HOME
igi@gentoo ~ $ echo "$HOME"
/home/igi
注: HOME为内部变量
2. 反斜杠/ 在单、双引号中的表现: 在双引号中的/, 将转义它后面的字符,使其具有特殊意义或者失去原来的特殊意义, 在单引号中的/, 将保留它的字面意思
代码如下:
igi@gentoo ~ $ echo '/$HOME'
/$HOME
igi@gentoo ~ $ echo "/$HOME"
$HOME
注: 双引号中的/,后面跟着$, 这里发生了转义,使得$失去特殊意义, 变成普通字符.
3. 反引号与其他两种引号的不同: 反引号包围起来的字符串将被运行,取其结果
代码如下:
igi@gentoo ~ $ echo 'date'
date
igi@gentoo ~ $ echo "date"
date
igi@gentoo ~ $ echo `date`
Fri Dec 3 18:34:09 CST 2010
注: 在反引号中的date被当成命令执行,包含的正是命令的输出信息
了解了他们的不同,我们来聊一聊常见的问题
1. 把反引号` 写 成单引号'
不得不说,它们长得确实很像,个别书的印刷字体区别度不高或者印刷质量不过关, 导致了很多新手认错,常把反引号`写成单引号'。如果你不知道反引号在哪,请看看Esc键下面的那个按键, 那个就是反引号。当然也不排除有些人看书不注意,这也是常有的事。只要我们明白了反引号与单引号作用的区别,什么时候要用单引号,什么时候要用反引号就一 清二楚了。当你需要一个字符串时,使用单引号; 而当你需要捕捉命令的输出时,请用反引号。
2. 总是忘了加双引号
双引号不总是多余的,被它包围的数据变得很安全,不至于被bash切开对待。
代码如下:
igi@gentoo ~ $ seq 3
1
2
3
igi@gentoo ~ $ echo `seq 3`
新闻热点
疑难解答