2017-03-11 7 views
8

name.txtありが含まれていますPerlとbashの外部コマンド差

Perlで
Tom 
Daniel 
James 

my $names = `cat names.txt`; 
print $names; 

が私に与える:

bashで
Tom 
Daniel 
James 

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

'cat'システムコールの実装方法をPerlで示してください。 – stevieb

+0

そして、Bashの 'cat'をどう使っているのですか?消えてくる改行は引用問題のように聞こえます。 –

+0

また、 'od -c name.txt'の出力をあなたの質問に編集してください。 – ThisSuitIsBlackNot

答えて

9

両方の変数は同じ値を受け取りますが、Bashの値を調べる方法には欠陥があります:echo "$names" - 二重引用符に注意してください - 真の値を確認してください。

bashで $names

非上場使用が作る手段word-splittingにその値主題、その値が空白で区切られた単語 - TomDaniel、及びJamesから別個引数からecho、及びechoを連結として渡されたもの出力にスペースを含む値。

関連する問題