2011-11-16 14 views
7

मैंने बैश में एक छोटी सी लिपि लिखी है जो किसी भी आउटपुट को उत्पन्न करने के लिए कोई फ़ाइल नहीं दी गई है या तो प्रदान की गई फ़ाइलों या stdin को पार करती है। पार्स किए गए आउटपुट को stdout पर रीडायरेक्ट करने का सबसे अच्छा तरीका क्या है (स्क्रिप्ट के अंत में परिणाम एक चर में संग्रहीत होता है)। क्या मुझे cat या echo का उपयोग करना चाहिए, या क्या कोई और पसंदीदा तरीका है?शेल स्क्रिप्टिंग: आउटपुट के लिए बिल्ली बनाम गूंज

उत्तर

9

printf आदेश का उपयोग करें:

printf '%s\n' "$var" 

echo साधारण मामलों के लिए ठीक है, लेकिन यह कुछ तर्क के लिए व्यवहार को अजीब कर सकते हैं। उदाहरण के लिए, echo में -n विकल्प है जो इसे एक नई लाइन मुद्रित करने के लिए कहता है। $var-n, तो होना करने के लिए होता है

echo "$var" 

कुछ भी प्रिंट नहीं होंगे। और echo (या तो विभिन्न गोले में बनाया गया है या /bin/echo) के कई अलग-अलग संस्करण हैं, जो अलग-अलग व्यवहारों के साथ हैं।

+1

+1। यह सलाह अधिक बार देखी जानी चाहिए –

3

echo ऐसा करने का एक अच्छा तरीका है। यदि आप काम करने के लिए cat चाहते हैं तो आपको कुछ हुप्स से कूदना होगा।

3

गूंज। आपके पास एक पार्सल डेटा है जो एक चर में है, इसलिए echo "$var" ठीक होना चाहिए। बिल्ली का उपयोग फ़ाइलों की सामग्री को मुद्रित करने के लिए किया जाता है, जो आप यहां नहीं चाहते हैं।

+0

यह एक महत्वपूर्ण बात है – niagr

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