2017-03-11 4 views
8

मेरे name.txt है शामिल हैं:पर्ल और बैश बाहरी कमांड अंतर

Tom 
Daniel 
James 

पर्ल में,

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

मुझे देता है:

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

कृपया दिखाएं कि आप पर्ल में 'बिल्ली' सिस्टम कॉल को कैसे कार्यान्वित कर रहे हैं। – stevieb

+0

और आप बैश में सीधे 'बिल्ली' का उपयोग कैसे कर रहे हैं - गायब होने वाले लाइनब्रेक्स गायब होने की समस्या की तरह गंध करते हैं। –

+0

इसके अलावा, कृपया अपने प्रश्न में 'od -c name.txt' से आउटपुट संपादित करें। – ThisSuitIsBlackNot

उत्तर

9

दोनों चर समान मान प्राप्त करते हैं, लेकिन जिस तरह से आप बैश में मान की जांच कर रहे हैं, वह त्रुटिपूर्ण है: echo "$names" का उपयोग करें - वास्तविक मूल्य देखने के लिए डबल कोट्स नोट करें।

बैश में $names की गैर उद्धृत उपयोग करता है word-splitting लिए अपने मूल्य विषय, जिसका अर्थ है कि मूल्य में खाली स्थान के द्वारा अलग किए गए शब्द - Tom, Daniel, और James - अलग तर्क को echo, और echo संयोजित रूप में पारित कर रहे हैं उन आउटपुट पर रिक्त स्थान के साथ मूल्य।

संबंधित मुद्दे