Shell编程中echo "$var"与echo $var的区别
时间:2006-04-18 来源:llouis
今天发现了一个有趣的现象,以前也出现过,但一直没太留意
例如,输入以下命令:
$var=`ls /`
此时var中应该保存了ls /的执行结果,且结果应该为多行,但是此时如果用以下方法输出var的值:
echo $var
看到的结果却只有一行:
bin cdrom core export lib .....
原来曾经认为这是反引号进行命令结果替换以后将换行符转换为空格,chinaunix上也确有一篇文章这样说。但是以下命令证明这种解释是错误的:
echo "$var"
结果为:
bin
cdrom
core
export
......
这表明var中并没有将换行符转换为空格,而是忠实的保留了命令执行的结果。但是为什么echo $var没有输出换行符呢?
作者认为这是由于shell中默认以空格、制表符、换行符作为分隔符,也就是说echo $var被shell解释为echo bin cdrom core export ......来执行。这样一来,空格和换行符便具有相同的含义了。
相关阅读 更多 +