Shell下有3种引号:双引号、单引号和反引号,他们的作用各不相同:
"" 其中的字符除了$、反引号(`)和转义符(\)外均作为字符本身对待 '' 其中的字符除转义符(\)外均作为字符本身对待 `` 其中的内容在命令行中首先被Shell作为命令解释,并在命令行中以该命令的 执行结果取代反引号部分
1. 双引号
双引号中的内容,除了$、反引号(`)和反斜杠(\)外均作为字符本身对待。其中,$表示变量引用(关于Shell变量,我们在后面还要学习),就是用变量值替换$及后面的变量名;反引号(`)表示命令引用,反引号及其中的内容用反引号中的命令的执行结果替换;反斜杠(\)表示转义,其后如果是$、"、`、\或换行符时,这些特殊符号将会被当做普通字符对待,另外\t表示制表符,\n表示换行。
[peter@ibi-genome shell]$ echo -e "Hello $LOGNAME" Hello peter [peter@ibi-genome shell]$ echo -e "Hello `echo Peter`" Hello Peter [peter@ibi-genome shell]$ echo -e "Hello \$LOGNAME" Hello $LOGNAME [peter@ibi-genome shell]$ echo -e "Ross is \"good at marriage\"." Ross is "good at marriage". [peter@ibi-genome shell]$ echo -e "Hello \`echo Peter\`" Hello `echo Peter` [peter@ibi-genome shell]$ echo -e "Hello \\$LOGNAME" Hello \peter [peter@ibi-genome shell]$ echo -e "Hello\t$LOGNAME" Hello peter [peter@ibi-genome shell]$ echo -e "Hello\n$LOGNAME" Hello peter
上面例子中,$LOGNAME是环境变量,其值是当前登录用户的用户名。关于环境变量,我们在后面还要学习。
2. 单引号
单引号的使用要简单一些,其中的字符除转义符(\)外都被Shell作为字符本身对待:
[peter@ibi-genome shell]$ echo -e 'Hello $LOGNAME' Hello $LOGNAME [peter@ibi-genome shell]$ echo -e 'Hello `echo Peter`' Hello `echo Peter` [peter@ibi-genome shell]$ echo -e 'Hello\tPeter' Hello Peter [peter@ibi-genome shell]$ echo -e 'Hello\nPeter' Hello Peter [peter@ibi-genome shell]$ echo -e 'Hello\\tPeter' Hello\tPeter
3. 反引号
反引号表示命令引用,Shell在执行命令行之前,先用反引号中的命令的执行结果替换反引号及其中的内容,我们在上面的双引号的例子中已经用过反引号,下面再给出另外一个例子:
[peter@ibi-genome shell]$ echo "The current path is: `pwd`"
The current path is: /home/peter/shell
上面的例子中,最后的输出结果中`pwd`已经被pwd命令的执行结果(当前路径)所代替。命令引用还有一种方法,即$(命令)的方式,如上面的例子也可以用下面的方式:
[peter@ibi-genome shell]$ echo "The current path is: $(pwd)"
The current path is: /home/peter/shell