ব্যাকস্ল্যাশ বিশেষভাবে দ্বারা চিকিত্সা করা হয় echo -e
, কিন্তু প্রথমে তারা হয় কখনও কখনও শেল (যা এই ক্ষেত্রে হয় বিশেষভাবে চিকিত্সা bash
,) শেল অনুযায়ী উদ্ধৃত নিয়ম।
যুক্তিটি echo
আসলে দেখেছে Hello\\n
। আপনি চলে গেছেন -e
বলে echo
, এটি ব্যাকস্ল্যাশটি বিশেষভাবে পালিয়ে যায় বলে বিবেচনা করে এবং \\
একটিতে পড়ে যায় \
। ফাইনালটি n
এড়ায় না, তাই এটি আক্ষরিকভাবে উপস্থিত হয়।
এর কারণ হ'ল, echo
নিজের অপারেশন করার আগে এবং পৃথকভাবে , শেলটি কিছু প্রসঙ্গে বিশেষভাবে আচরণ \
করে তবে অন্যকে নয়। অব্যক্ত \
চরিত্রগুলি সর্বদা বিশেষভাবে চিকিত্সা করা হয়, একক-উদ্ধৃতি \
কখনও বিশেষভাবে বিবেচনা করা হয় না, তবে আপনি যে আদেশটি দৌড়েছিলেন তেমন ডাবল-কোট করা \
অক্ষরের চিকিত্সা আরও সূক্ষ্ম এবং জটিল।
শেলটি যখন কোনও কমান্ডে ডাবল-কোটেড পাঠ্যের মুখোমুখি হয় "Hello\\\n"
, \
তখন এটি পালাবার চরিত্র হিসাবে বিবেচিত হয় যখন এমন কোনও চরিত্রের আগে থাকে যা ডাবল কোটের ভিতরে নিজেই বিশেষ অর্থ রাখতে পারে এবং অন্যথায় নয় ।
- কারণ
\
মাঝে মাঝে ভিতরে একটি বিশেষ অর্থ থাকে ""
, \
যা অন্যের আগে তাত্ক্ষণিকভাবে \
তার দ্বিতীয়টি উদ্ধৃত করার প্রভাব ফেলে \
। সুতরাং ডাবল উদ্ধৃতি ভিতরে, প্রথমটি \\
ধসে পড়েছে \
।
- এই প্রথম দুটি
\
চরিত্রের পরে , একটি তৃতীয় \
অক্ষর রয়েছে যা সেই প্রথম দুটি দ্বারা প্রভাবিত হয় না এবং এটি পূর্ববর্তী দুটি হয় n
। তবে n
এমন কোনও চরিত্র নয় যা কখনও ডাবল কোটসের অভ্যন্তরে বিশেষভাবে চিকিত্সা করা হয়, সুতরাং \
এই পরিস্থিতিতে বিশেষভাবে এটির আগে চিকিত্সা করা হয় না। এভাবেই \n
থাকে \n
।
এর প্রভাবটি হ'ল ডাবল উক্তিগুলিতে \\\n
ব্যাখ্যা করা হয় \\n
।
যখন echo -e
দেখা যায় \\n
, প্রথমটি \
দ্বিতীয় থেকে বিশেষ অর্থ সরিয়ে দেয়, সুতরাং পাঠ্যের জন্য আক্ষরিক echo
মুদ্রণ করে \n
।
আপনার লক্ষ্য প্রিন্ট করতে হয়, তাহলে Hello
একটি অতিরিক্ত সম্পর্কে newline কিন্তু কোন ব্যাকস্ল্যাশ সঙ্গে (প্রশ্ন প্রকৃতপক্ষে এই সম্পর্কে দ্ব্যর্থক ছিল, প্লাস আমি মনে করি এটা একটি দরকারী উদাহরণ), তারপর এক সমাধান অপসারণ করা হয় \
। শেষে অতিরিক্ত নিউলাইন দিয়ে echo -e "Hello\\n"
আউটপুটগুলি চালানো Hello
।
একটি ভাল সমাধান হ'ল একক উদ্ধৃতি ব্যবহার এবং লিখুন echo -e 'Hello\n'
। একক উদ্ধৃতি উদ্ধৃতি শক্তিশালী ফর্ম। একটি আরও ভাল সমাধান সাধারণত printf
পরিবর্তে ব্যবহার করা হয় echo
, যা এই ক্ষেত্রে হবে printf 'Hello\n\n'
।
যদি আপনার লক্ষ্য Hello\
ব্যাকস্ল্যাশ সহ মুদ্রণ করা হয় এবং তার পরে অতিরিক্ত নিউলাইন থাকে , তবে ডাবল-কোটেড পদ্ধতির পক্ষে সম্ভব তবে জটিল। এটি বের করার জন্য, পিছনের দিকে কাজ করুন: একটি নতুন লাইনে echo -e
রূপান্তরিত \\
হয় \
এবং \n
ডাবল-কোটিং রূপান্তরিত \\
হয় \
, সুতরাং আপনি এটি ছয়টি ব্যাকস্ল্যাশ ( echo -e "Hello\\\\\\n"
) দিয়ে করতে পারেন , কারণ একটি ব্যাকস্ল্যাশ অন্যের \\n
পিছনে \n
পালিয়ে যাওয়ার কারণে পরিণত হয় । আপনি এটি পাঁচটি দিয়েও করতে পারেন, কারণ ডাবল-উদ্ধৃতি \n
যখন \
রক্ষা পায় না তখন ধরে রাখে ।
এটি একক উদ্ধৃতি দেওয়ার সুবিধাটি চিত্রিত করে: আপনি যা echo -e
দেখতে চান তা একক উদ্ধৃতি ( echo -e 'Hello\\\n'
) এর মধ্যে রাখুন। printf
এখানেও ভাল। এক বিকল্প printf 'Hello\\\n\n'
। তবে যেখানে printf
সত্যই জ্বলজ্বল তা হ'ল আপনি অতিরিক্ত যুক্তি যুক্ত করতে পারেন। আপনি ব্যবহার করতে পারেন printf '%s\n\n' 'Hello\'
, যা দ্বিতীয় যুক্তি সন্নিবেশ করে (আক্ষরিক Hello\
কারণ একক উদ্ধৃতি কিছু পরিবর্তন করে না) %s
।