【分享】菜鸟学习笔记之二:说明 "号 ,'号 和 `号 在echo命令中的作用

【分享】菜鸟学习笔记之二:说明 "号 ,'号 和 `号 在echo命令中的作用

文章背景:上午做shell脚本的练习,试验了一下这三个符号在echo中的用法,花了一个小时,不敢独享。写出来给大家看看。

这里先做一下解释,注意`号,不是单引号(我也不知道它叫什么名字),如果你用的是标准的PC键盘,它是位于“1”键的左边,Tab键的上边,和~在一起。我用的是IBM的键盘。




在echo命令中,位于'之间的字符串,是被原样显示的;位于"之间的字符串,是被解释并显示的;奇妙的是,位于`之间的字符串,是被解释并执行后,再显示的。

举例说明:

脚本myshell,内容为:

echo "basename $0"

echo 'basename $0’

echo `basename $0`

echo " This is `basename $0`"

echo ' This is `basename $0`’

执行它,命令行输入:[root@localhost root]# ./myshell
刁难大家一下,请先对照上面的说明,自己预测一下结果。(坏笑中...):w







答案来了!

basename ./myshell

basename $0

myshell

This is myshell

This is `basename $0`

后面两行,您猜对了吗?


解释如下:
echo第一行,因为”间的字符串被解释输出,所以$0被解释为./myshell,输出为:basename ./myshell

echo第二行,因为‘间的字符串被原样输出,所以输出为:basename $0

echo第三行,因为`间的字符串被解释,执行并输出,所以字符串被解释为命令 basename ./myshell,这个命令执行的结果是myshell,
         所以输出myshell

echo第四行,因为"间的字符串被解释输出,所以$0被解释,basename $0被执行,输出为:This is myshell

echo第五行,因为‘间的字符串被原样输出,所以输出为:This is `basename $0`

写到这里,我真是佩服shell的设计者了,佩服得五体投地,居然用这么奇怪的符号,设计出这么奇妙的功能,匪夷所思!:rolleyes:

给读者出个思考题(!!!请严格按照下面的步骤做,否则结果不可预测,出了问题别打我。):
建立一个目录d,进入目录d,建立一个长度为0的文件a。在命令行上输入`ls`。会有什么结果? 为什么?

关于这个`号,我不明白它的用途在哪里,有哪位有经验的大侠给说说?先谢了:p      
不错,好好学习,天天向上      
这个练习题及老兄的经验很值得学习!      
`符号都是和echo一起用的吧!      
那个叫做反引号.back quotes