ব্যবহার মধ্যে ডিফেরেন্স কি
echo -e "Hello\nWorld"
এবং
echo $"Hello\nWorld"
তারা উভয় আউটপুট না:
Hello
World
echo $'Hello\nWorld', যা বাশের নীচে দুটি লাইনে মুদ্রণ করবে।
ব্যবহার মধ্যে ডিফেরেন্স কি
echo -e "Hello\nWorld"
এবং
echo $"Hello\nWorld"
তারা উভয় আউটপুট না:
Hello
World
echo $'Hello\nWorld', যা বাশের নীচে দুটি লাইনে মুদ্রণ করবে।
উত্তর:
echo -eএবং echo $'...'উভয় একই হয় যে তারা নীচের অংশীদারি ক্রম সমর্থন:
\a alert (bell)
\b backspace
\e
\E an escape character
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\0nnn the eight-bit character whose value is the octal value nnn (zero to three octal digits)
\xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
\uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
\UHHHHHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)
তাদের মধ্যে পার্থক্য রয়েছে। উপরেরগুলি ছাড়াও, echo -eসমর্থন করে:
\c suppress further output
\0nnn the eight-bit character whose value is the octal value nnn (zero to three octal digits)
বিপরীতে, $'....'সমর্থন:
\' single quote \" double quote \nnn the eight-bit character whose value is the octal value nnn (one to three digits) \cx a control-x character
লক্ষ্য করুন যে, উভয়ের মধ্যে, \cএক্সটেনশনগুলি বেমানান:
$ echo -e 'start\n\cIstop'
start
$ echo $'start\n\cIstop'
start
stop
জন্য echo -eউপরে \cআরও আউটপুট শুষে ফলে উপেক্ষা Istop। বিপরীতে, জন্য $'...', \cIএকটি ট্যাব হিসাবে ব্যাখ্যা করা হয়।
$"..."এর বিপরীতে $'...', এর কাজটি $"..."বেশ আলাদা। এটি এতে থাকা স্ট্রিংটিকে বর্তমান লোকেল অনুসারে অনুবাদ করতে হবে।
echo -eবিতর্কecho -eশেলগুলি সর্বজনীনভাবে সমর্থন করে না এবং অনেকে -eবিকল্পটিকে ডিজাইনের ভুল হিসাবে বিবেচনা করে । পালন:
$ ls
-e -n
$ echo *
$ printf "%s\n" *
-e
-n
আপনি দেখতে পাচ্ছেন, আপনি যা মুদ্রণ করছেন তা যদি echoকোনও ড্যাশ দিয়ে শুরু হয় তবে ফলাফলটি অপ্রত্যাশিত হতে পারে। আপনি নিশ্চিত না হন যে আপনি যে প্রথম স্ট্রিংটি মুদ্রণ echoকরবেন তা কোনও ড্যাশ দিয়ে শুরু হবে না, আপনি সম্ভবত ব্যবহার করা ভাল printf।
এই কারণে, পসিক্স মানটি শেষ করে :
নতুন অ্যাপ্লিকেশনগুলি প্রতিধ্বনির পরিবর্তে প্রিন্টফ ব্যবহার করতে উত্সাহিত করা হয়।
চিট রেমি, যিনি bashগত 22 বছর ধরে রক্ষণ করেছেন , সম্মত হন :
[এন] ই কোড কোড প্রিন্টফ ব্যবহার করা উচিত।
*) থেকে অপ্রত্যাশিত বিকল্পগুলির সমস্যাটি আসলে সুনির্দিষ্ট নয় echo। এটি এমন কোনও কমান্ডের সাথে ঘটে যা সংক্ষিপ্ত বা দীর্ঘ বিকল্পগুলি স্বীকৃতি দেয় (প্রচলিত পদ্ধতিতে লিখিত) এবং ফাইল নাম অপারেন্ডস সহls , গ্রহণ করে । যুক্তিযুক্তভাবে পরিস্থিতি কিছুটা খারাপ echoকারণ যেহেতু (আপনার উত্স হিসাবে উল্লেখ করা হয়েছে) echoসাধারণত --বিকল্পগুলির সমাপ্তি নির্দেশ করতে স্বীকৃতি দেয় না , যেখানে কেউ কমান্ড লিখতে পারে ls -- *l। (এবং সত্যিই কোনও কমান্ডগুলি সাধারণত সেইভাবে লেখা উচিত, যখন গ্লোবগুলি শুরু হয় *বা -বিশেষত স্ক্রিপ্টগুলিতে ব্যবহার করা হয়))
\nপালাবার ক্রম, তাই এটি আসলে ব্যাপার যদি আমি ব্যবহার করে না echo -e '...', echo $'...'অথবাecho $"..."
Hello\nWorld।-eপালানোর অক্ষরগুলি ব্যাখ্যা করতে আপনার সুইচ দরকার ।