perl和bash外部命令的区别

Min*_*t.K 8 bash perl

我的name.txt包含:

Tom
Daniel
James
Run Code Online (Sandbox Code Playgroud)

在Perl,

my $names = `cat names.txt`;
print $names;
Run Code Online (Sandbox Code Playgroud)

给我:

Tom
Daniel
James
Run Code Online (Sandbox Code Playgroud)

在Bash,

names=`cat names.txt`
echo $names
Run Code Online (Sandbox Code Playgroud)

给我:

Tom Daniel James
Run Code Online (Sandbox Code Playgroud)

这是我的输出od -c name.txt:

0000000    T  o  m  \n   D   a   n   i   e   l  \n   J   a   m   e   s
0000020
Run Code Online (Sandbox Code Playgroud)

差异的原因是什么?

mkl*_*nt0 9

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

无引号使用$names在击使得其值受字分裂,这意味着在所述值的空格分隔单词- Tom,DanielJames-作为传递独立参数echo,以及echo串接这些值与输出的空间.