जवाबों:
इसके echo -n
लिए जो है।
cat
? (उदाहरण के लिए जब आपके पास एक something.txt
चर के बजाय एक फ़ाइल है $something
)
printf
की तुलना में बहुत लचीला और अधिक पोर्टेबल है echo
। C / Perl / etc कार्यान्वयन की तरह, यदि आप प्रारूप स्ट्रिंग को समाप्त नहीं करते हैं \n
तो कोई नई पंक्ति नहीं छपी है:
printf "%s" "$something" >> file.txt
यदि आप कमांड के आउटपुट का उपयोग कर रहे हैं, तो आप इको के साथ संयोजन में xargs का उपयोग कर सकते हैं
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr
एक और विकल्प है।
यदि आप echo
अपने इनपुट के रूप में उपयोग कर रहे हैं तो आप दूर हो सकते हैं tr -d '\n'
।
यह तकनीक तब भी काम करती है जब अन्य कमांड से आउटपुट में पाइपिंग (आउटपुट की केवल एक लाइन के साथ)। इसके अलावा, अगर आपको पता नहीं है कि फाइल में UNIX या DOS लाइन एंडिंग्स हैं जिनका आप उपयोग कर सकते हैं tr -d '\n\r'
।
यहाँ कुछ परीक्षण दिखा रहे हैं कि यह काम करता है।
न्यूलाइन में शामिल हैं:
something='0123456789' ; echo ${something} | wc -c
11
UNIX की नई पंक्ति:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
डॉस शैली:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
बीएसडी tr
और जीएनयू के साथ परीक्षण किया गया tr
।
echo $something
, इसका व्यवहारIFS
चर पर निर्भर करता है , और आप गायब चरित्र के साथ समाप्त हो सकते हैं। आप निम्नलिखित की कोशिश कर सकते हैं:var="hello world"; echo $var
(हैलो और दुनिया के बीच दो रिक्त स्थान) याvar="hello world"; IFS='l'; echo $var
याvar="-e hello \\n world"; echo $var
। इसे हल करने के लिए, इस तरह से चर के आसपास दोहरे उद्धरण लगाएं:echo "$var"
या उपयोग करेंprintf
।