使用echo输出未被引用的命令代换的变量时会删掉尾部的换行。这可能会导致非常不好的情况出现。
尽量不要将一大段文字赋值给一个变量,除非你有足够的理由。也绝不要将一个二进制文件的内容赋值给一个变量。
在引用变量时,testfile_listing=`ls -l` ,echo $testfile_listing 和echo "$testfile_listing"的结果不同,第一个删除了尾部的换行,而第二个没有是以原结果输出的,主要是echo 在不同的引用情况下结果不同。
echo `command`将会删除任何有命令产生的换行符.
$IFS(内部域分隔符)一般都会将\n(换行符)包含在它的空白字符集合中.Bash 因此会根据参数中的换行来分离命令的输出.然后 echo 将以空格代替换行来输出这些参数.
转载于:https://my.oschina.net/wangzongtao/blog/656370