লিনাক্স শেল থেকে চরিত্র পালনের পর্দার আড়ালে কী ঘটছে তা কেউ কেউ ব্যাখ্যা করতে পারেন? আমি কী চেষ্টা করেছি (এবং কীভাবে) তা বুঝতে কোনও সফলতা ছাড়াই আমি নিম্নলিখিতগুলি চেষ্টা করে অনেকটা গুগল করেছি:
root@sv01:~# echo -e "\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\ Hello!"
\ Hello!
root@sv01:~# echo -e "\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\ Hello!"
\\ Hello!
root@sv01:~# echo -e "\\\\\\\\\ Hello!"
\\\ Hello!
root@sv01:~# echo -e "\n Hello!"
Hello!
root@sv01:~# echo -e "\\n Hello!"
Hello!
root@sv01:~# echo -e "\\\n Hello!"
\n Hello!
আমি সেখানে সম্পূর্ণ হারিয়েছি, উদাহরণস্বরূপ, কেন তিনটি ব্যাকস্ল্যাশ কেবল একটি পিছনে স্ল্যাশ দেয়? আমি প্রত্যাশা করব: প্রথম দু'জন একজনের কাছে পালিয়ে যাবে, তৃতীয়টি পালাতে কিছুই খুঁজে পাবে না কারণ এটি স্ল্যাশ (প্রথম পরীক্ষায় লাইন) থেকে যাবে, তবে যা ঘটছে তা হ'ল তৃতীয়টি কেবল অদৃশ্য হয়ে গেছে।
কেন আমি চার থেকে একটি ব্যাকস্ল্যাশ পাচ্ছি \\\\ Hello
? আমি প্রত্যাশা করব যে প্রতিটি জুটি একটি পিছনে স্ল্যাশ -> দুটি ব্যাকস্ল্যাশ দেবে।
Escaped n পালাতে আমার কেন শেষ ক্ষেত্রে তিনটি ব্যাকস্ল্যাশ দরকার? যে পলায়নের পটভূমিতে কি ঘটছে? এবং এটি \\n
কেস থেকে আলাদা কীভাবে ?
পূর্ববর্তী লাইনে কী চলছে তার কোনও ব্যাখ্যা আমি প্রশংসা করি।
echo -e
নিরাপদ নয়: echo
স্ট্যান্ডার্ড অনুসারে আচরণ করবে যদি উভয় posix
এবং xpg_echo
রানটাইম বিকল্পগুলি সক্ষম হয়, বা সমমানের বিল্ড-টাইম বিকল্পগুলির সাথে সংকলিত হয়। নিরাপদ অনুশীলনটি printf
পরিবর্তে ব্যবহার করা হচ্ছে - উপরের লিঙ্কটির অ্যাপ্লিকেশন ব্যবহার এবং রেসেশন বিভাগটি দেখুন কীভাবে printf
প্রতিস্থাপন হিসাবে কাজটি করা যায় তা বর্ণনা করে echo
।
echo -e
আচরণ কোনওভাবেই স্ট্যান্ডার্ড-সংজ্ঞায়িত নয় - pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html দেখুন । ইনপুটগুলির যে কোনও জায়গায় আক্ষরিক ব্যাকস্ল্যাশ থাকলে আউটপুট সম্পূর্ণরূপে সংজ্ঞায়িত হয় এবং একমাত্র অনুমোদিত বিকল্পটি-n
(মানে একটি মান-সম্মতিযুক্ত বাস্তবায়নটির আউটপুটটিতেecho -e
মুদ্রণ থাকবে-e
)।