【拿来主义】Shell中的4种引字符号:单引号、双引号、反引
号、反斜杠的⽤法
1. 单引号 ( '' )
# grep Susan phonebook
Susan Goldberg 403-212-4921
Susan Topple    212-234-2343
如果我们想查的是Susan Goldberg,不能直接使⽤grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的⽂件
# grep 'Susan Gold' phonebook
Susan Goldberg 403-212-4921
当shell碰到第⼀个单引号时,它忽略掉其后直到右引号的所有特殊字符
2. 双引号 ( " " )
双引号作⽤与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,⽽双引号只要求忽略⼤多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,⽽单引号直接使⽤字符串.如果使⽤双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并⽆差别。如果要查询包含空格的字符串,经常会⽤到双引号。
# x=*字符串常量中不能直接包括双引号和反斜杠符号
# echo $x
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x'
$x
# echo "$x"
*
这个例⼦可以看出⽆引号、单引号和双引号之间的区别。在最后⼀种情况中,双引号告诉shell在引号内
照样进⾏变量名替换,所以shell把$x替换为*,因为双引号中不做⽂件名替换,所以就把*作为要显⽰的值传递给echo。对于第⼀种情况需要进⼀步说明,shell在给变量赋值时不进⾏⽂件名替换(这从第三种情况中也能看出来),各步骤发⽣的精确次序如下: shell扫描命令⾏,把x的值设为星号*;
shell再次扫描命令⾏,碰到星号*,把它替换成当前⽬录下的⽂件清单;
shell启动执⾏echo命令,把⽂件清单作为参数传递给echo.
这个赋值的先后次序⾮常重要:shell先作变量替换,然后作⽂件名替换,最后把这⾏处理为参数
3. 反引号(``)
命令替换是指shell能够将⼀个命令的标准输出插在⼀个命令⾏中任何位置。shell中有两种⽅法作命令替换:把shell命令⽤反引号或者$(...)结构括起来,其
中,$(...)格式受到POSIX标准⽀持,也利于嵌套。
# echo The date and time is `date`
The date and time is 三 6⽉ 15 06:10:35 CST 2005
# echo Your current working directory is $(pwd)
Your current working directory is /home/howard/script
4. 反斜杠 backslash-escaped( \ )
反斜杠⼀般⽤作转义字符,或称逃脱字符,linux如果echo要让转义字符发⽣作⽤,就要使⽤-e选项,且转义字符要使⽤双引号
echo -e "\n"
反斜杠的另⼀种作⽤,就是当反斜杠⽤于⼀⾏的最后⼀个字符时,shell把⾏尾的反斜杠作为续⾏,这种结构在分⼏⾏输⼊长命令时经常使⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。