perl和bash外部命令的区别

我的名字.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

差异的原因是什么?

解决方法

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

在Bash中不加引号地使用$name会使其值受到word-splitting的影响,这意味着值中的空格分隔的单词–Tom,Daniel和James – 作为echo的单独参数传递,并且echo在输出中将这些值与空格连接起来.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...