2017-03-11 15 views
8

name.txt有載:Perl和bash的外部命令的區別

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

請告訴你如何在Perl中實現'cat'系統調用。 – stevieb

+0

以及如何直接在Bash中使用'cat' - 消失的linebreaks聞起來像引用問題。 –

+0

另外,請編輯'od -c name.txt'的輸出到你的問題中。 – ThisSuitIsBlackNot

回答

9

這兩個變量都會得到相同的值,但是您檢查Bash中值的方式有缺陷:使用echo "$names" - 注意雙引號 - 以查看真實值。

非上市使用在擊$names使得其值受word-splitting,這意味着在所述值的空格分隔單詞 - TomDaniel,和James - 如獨立參數echo,和echo會連接被傳遞那些值與輸出上的空格。