উত্তর:
এটা কি echo -n
জন্য।
cat
? (যেমন আপনার যখন something.txt
ভেরিয়েবলের পরিবর্তে কোনও ফাইল থাকে $something
)
printf
খুব নমনীয় এবং তুলনায় আরও বহনযোগ্য echo
। সি / পার্ল / ইত্যাদি বাস্তবায়নগুলির মতো, আপনি যদি বিন্যাসের স্ট্রিংটি সমাপ্ত না করেন \n
তবে কোনও নতুন লাইন প্রিন্ট করা হয় না:
printf "%s" "$something" >> file.txt
আপনি যদি কমান্ডের আউটপুট ব্যবহার করে থাকেন তবে আপনি প্রতিধ্বনির সাথে xargs ব্যবহার করতে পারেন
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr
অন্য বিকল্প।
আপনি যদি echo
নিজের ইনপুট হিসাবে ব্যবহার করেন তবে আপনি যা পেতে পারেন tr -d '\n'
।
অন্যান্য কমান্ড থেকে আউটপুট পাইপিংয়ের সময়ও এই কৌশলটি কাজ করে (কেবলমাত্র একক আউটপুট আউটপুট)। তদতিরিক্ত, যদি আপনি না জানেন যে ফাইলগুলির ইউনিক্স বা ডস লাইনের শেষ রয়েছে যা আপনি ব্যবহার করতে পারেন tr -d '\n\r'
।
এখানে কিছু পরীক্ষা দেখাচ্ছে যা এটি কাজ করে।
নিউলাইন অন্তর্ভুক্ত:
something='0123456789' ; echo ${something} | wc -c
11
ইউনিক্স নিউলাইন:
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
।