我的name.txt
包含:
Tom
Daniel
James
在Perl中,
my $names = `cat names.txt`;
print $names;
给了我:
Tom
Daniel
James
在Bash,
names=`cat names.txt`
echo $names
给了我:
Tom Daniel James
这是od -c name.txt
的输出:
0000000 T o m \n D a n i e l \n J a m e s
0000020
差异的原因是什么?
答案 0 :(得分:9)
两个变量都接收相同的值,但是你在Bash中检查值的方式存在缺陷:使用echo "$names"
- 注意双引号 - 查看真值。
在Bash中不加引用$names
使其值受word-splitting影响,这意味着值中包含以空格分隔的单词 - Tom
,Daniel
和{ {1}} - 作为单独的参数传递给James
,echo
将这些值与输出中的空格连接起来。