单引号:为了保护文字不被转换.除了他本身. 就是说除去单引号外, 在单引号内的所有文字都是原样输出. 两个单引号中的任何内容都原样输出,但不能有单引号本身。
[root@node1 ~]# echo '~``\!@#\$%^&*"a"`date`(abc) _+a12'
~``\!@#\$%^&*"a"`date`(abc) _+a12
如上不管你里面是什么东西全原样输出(不能有单引号)
那要如何输出单引号本身呢?可以使用“\”转义输出或用双引号
[root@node1 ~]# echo 'i'\''m a vampire'
i'm a vampire
[root@node1 ~]# echo i\'m a vampire
i'm a vampire
上述两种方法都一样linux会从第一个单引号从左往右读第二个
[root@node1 ~]# echo 'i'"'"'m a vampire'
i'm a vampire
[root@node1 ~]# echo "i'm a vampire"
i'm a vampire
[root@node1 ~]# echo 'i\'m a vampire' --此种方法不行系统会将i\作为一个字符读出,而不会转义
双引号:为了包含文字或者函数段. 除了本身,反引号内的函数,$开头的变量和\开头反转换的字符外, 其余都是直接输出.
[root@node1 ~]# echo "today is `date`"
today is Sat Oct 19 00:01:37 CST 2013
[root@node1 ~]# echo "pwd $PWD"
pwd /root
[root@node1 ~]# echo "\\\\"
\\
反引号:目的是为了在双引号内保持函数转换. 但单引号内其无作用.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29014732/viewspace-774616/
,如需转载,请注明出处,否则将追究法律责任。