perl和bash外部命令差异

时间:2017-03-11 01:49:31

标签: bash perl

我的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

差异的原因是什么?

1 个答案:

答案 0 :(得分:9)

两个变量都接收相同的值,但是你在Bash中检查值的方式存在缺陷:使用echo "$names" - 注意双引号 - 查看真值。

在Bash中不加引用$names使其值受word-splitting影响,这意味着值中包含以空格分隔的单词 - TomDaniel和{ {1}} - 作为单独的参数传递给Jamesecho将这些值与输出中的空格连接起来。