双引号是什么意思,单引号与双引号的区别!
双引号:
把双引号内的模式输出出来;如果模式中有号令、变量等,会先把变量、号令剖析出结果,往后在输出终极模式来。
不加引号:
不会将含有空格的字符串视为一个集团输出, 如果模式中有号令、变量等,会先把变量、号令剖析出结果,往后在输出终极模式来,如果字符串中带有空格等特殊字符,则不克不及完整的输出,必要改加双引号,一般连续的字符串,数字,门路等可能用。
实例演示:
例1:
[root@oldboy oldboy]# echo "`date`"
#→单引号时看到啥就显示啥
`date`
[root@oldboy oldboy]# echo "`date`"
#→双引号时如果概况是变量,会先把变量剖析成详细模式在显示
Sat Oct 29 18:02:59 CST 2011
[root@oldboy oldboy]# echo `date`
#→对于连续的字符串等模式一般不加引号也可,加双引号一般角力共计安然,举荐
Sat Oct 29 18:03:08 CST 2011
例2:
[root@oldboy ~]# oldboy=testchars #→创建一个变量
[root@oldboy ~]# echo $oldboy #→不加引号,显示一个变量剖析后的模式
testchars
[root@oldboy ~]# echo "$oldboy" #→单引号,显示一个变量自己
$oldboy
[root@oldboy ~]# echo "$oldboy" #→双引号,显示一个变量模式,引号内可能是变量、字符串等
testchars
过滤字符串测试:
[root@oldboy ~]# cat >grep.log
testchars
oldboy
[root@oldboy ~]# cat grep.log
testchars
oldboy
[root@oldboy ~]# grep "$oldboy" grep.log
博客testchars
[root@oldboy ~]# grep "$oldboy" grep.log
[root@oldboy ~]# grep $oldboy grep.log
testchars
[ett@oldboy ~]$ cat >oldboy.log
"
[ett@oldboy ~]$ cat oldboy.log
"
[ett@oldboy ~]$ grep """ oldboy.log
"
揭示:无关单引号和双引号的判袂详细模式请参考《老男孩linux运维实战培训-shell编程精讲》
拓展:awk调用shell变量问题
[ett@oldboy ~]$ ett=123
[ett@oldboy ~]$ awk "BEGIN {print "$ett"}"
123
[ett@oldboy ~]$ awk "BEGIN {print "$ett"}"
$ett
[ett@oldboy ~]$ ett="abc"
[ett@oldboy ~]$ awk "BEGIN {print "$ett"}"
$ett
[ett@oldboy ~]$ awk "BEGIN {print "$ett"}"
[ett@oldboy ~]$ awk "BEGIN {print ""$ett""}"
abc