जवाबों:
इसके 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।