echo是用于终端打印的操作。默认情况下,echo在每次调用后添加一个换行符。 下面三条命令输出一样
html] view plain copy
echo "hello world!"
echo 'hello world!'
echo hello world!
看起来加双引号,单引号或不加引号用法类似,但各有一些特殊用途和副作用。 如果你想打印出如下内容: hello world!"how are you?" 使用命令:
[html] view plain copy
echo "hello world! "how are you?""
echo hello world! "how are you?"
得到的结果都是: hello world! how are you? 使用如下命令得到预期结果:
[html] view plain copy
echo 'hello world! "how are you?"'
echo "hello world! \"how are you?\""
所以,<1>.使用单引号会直接打印出单引号里面内容,使用双引号时打印特殊字符需要使用转义字符来转义,使用双引号和不使用引号作用类似。 用下面命令输出用户目录:
[html] view plain copy
echo "My home is $HOME"
echo 'My home is $HOME'
得到结果:
[html] view plain copy
My home is /home/allen
My home is $HOME
所以,<2>,使用单引号的echo时,shell不会对单引号中的变量求值,而是照原样显示。 如下命令:
[html] view plain copy
echo "Hello world!;date"
echo Hello world!;date
结果为:
[html] view plain copy
Hello world!;date
Hello world!
Wed Apr 2 10:47:40 CST 2014
所以,<3>, 没有使用双引号时分号后面会被认作一个命令执行,在bash中,每个命令或命令序列是通过;或换行符来分隔的。
原文:blog.csdn.NET/gentleliu。