2017-03-11 23 views
8

Benim name.txt sahiptir içerir:perl ve bash dış komut farkı

Perl
Tom 
Daniel 
James 

,

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

bana verir:

Bash
Tom 
Daniel 
James 

,

names=`cat names.txt` 
echo $names 

bana verir:

Tom Daniel James 

İşte od -c name.txt benim çıkışın:

0000000 T o m \n D a n i e l \n J a m e s 
0000020 

farkın nedeni nedir?

+0

Lütfen Perl'de 'cat' sistem çağrısını nasıl uyguladığınızı gösterin. – stevieb

+0

Ve doğrudan Bash'de "kedi" yi nasıl kullanıyorsunuz - yok olan linebreaks bir alıntılama sorunu gibi kokuyor. –

+0

Ayrıca, lütfen 'od -c name.txt' adresindeki çıkışı sorunuza düzenleyin. – ThisSuitIsBlackNot

cevap

9

Her iki değişken de aynı değeri alır, ancak Bash'deki değeri incelemenizin yolu kusurludur: echo "$names" kullanın - çift tırnak işaretini not edin - gerçek değeri görmek için.

Bash $names arasında

Öncelenmemiş kullanımı hale gelir word-splitting için değeri olarak, o değerinde boşluk ayrılmış kelimeler - Tom, Daniel ve James-ayrı bağımsız değişkenler için echo ve echo birleştirir olarak geçirilir, bu çıktıdaki boşluklarla değerler.