অক্ষর escaping এবং কমান্ড echo


1

সহজ ইকো কমান্ড হচ্ছে:

echo "\n"

এবং

echo "\\n"

উভয় একই আউটপুট ফলাফল

\n

কেউ বিস্তারিতভাবে আমাকে ব্যাখ্যা করতে পারেন কিভাবে ব্যাশ প্রক্রিয়া যেমন একটি কমান্ড (গৃহস্থালি দ্বারা গৃহস্থালি) এবং উভয় ক্ষেত্রে ফলাফল একই কেন?


2
কারণে bash। ব্যাখ্যা এখানে । আপনার গবেষণা থেকে শুরু করা উচিত man bash, উত্তর আছে।
Kamil Maciorowski

এই ক্ষেত্রে এটি bash মত দেখায় এবং প্রতিধ্বনি ব্যাখ্যা করা হয় না \n। (প্রতিধ্বনি একটি বিশেষ পরামিতি প্রয়োজন, -e এটা ব্যাখ্যা করার জন্য)। কিন্তু \\ বুঝানো হচ্ছে এবং রূপান্তরিত হচ্ছে \\ \\ থেকে \ echo, echo বা bash ব্যাখ্যা করছে তা নিশ্চিত না। তবে \\ শব্দটিকে আক্ষরিক হতে পালিয়েছে বলে বোঝানো হয়েছে। তাই একই ফলাফল। এছাড়াও একক বনাম ডবল কোট আবার দেখুন stackoverflow.com/questions/6697753/...
barlop

আমি মনে করি যে এসও লিঙ্কের উপর ভিত্তি করে bash ব্যাখ্যা করবে \\ as \ double when quotes ব্যবহার করা হবে। এছাড়াও, আপনি কোন প্রোগ্রামটি দেখেন তা দেখতে একটি সি প্রোগ্রাম ব্যবহার করতে পারেন, এবং সেইজন্য কী ব্যাশ করছে তা দেখুন, যেহেতু প্রোগ্রামটি পেয়েছে তা ইতিমধ্যে ব্যাশ দ্বারা ব্যাখ্যা করা হয়েছে। এই ধরনের প্রোগ্রাম ... আমি উইন্ডোতে এটি ব্যবহার করেছি, এটি প্রয়োজন হতে পারে linux জন্য সামঞ্জস্যপূর্ণ করা হবে superuser.com/questions/328611/... আমি মনে করি GetCommandLine এক উইন্ডোজ সম্পর্কিত তাই যে উপেক্ষা কিন্তু কোড আছে printf("argv[%d] = %s\n", i, argv[i]); আপনার আগ্রহ হবে।
barlop

উত্তর:


1

সংক্ষিপ্ত উত্তর যে \ সবসময় বিশেষ নয় bash অথবা echo। ডাবল উদ্ধৃতি ছাড়া সবকিছু ভিতরে আক্ষরিক স্ট্রিং মান সংরক্ষণ $, `, \, এবং কখনও কখনও !। ডবল কোট বাইরে, \ সবসময় bash বিশেষ: এটি নিম্নলিখিত চরিত্রের আক্ষরিক স্ট্রিং মান সংরক্ষণ করে। উদ্ধৃতি ভিতরে, ব্যাকস্ল্যাশ \ শুধুমাত্র পাঁচটি অক্ষর এক অনুসরণ যখন বিশেষ: $, `, ", \, অথবা একটি নতুন লাইন। প্রথম চারটি ক্ষেত্রে এটি নিম্নোক্ত অক্ষরটির আক্ষরিক স্ট্রিং মানটি সংরক্ষণ করে। যাও bash ইকো সংস্করণ, \ বিশেষ না হওয়া পর্যন্ত -e পতাকা প্রদান করা হয়।

সুতরাং, আপনার দুটি ক্ষেত্রে, কী ঘটছে:

echo "\n"

এক্ষেত্রে, \ উল্লিখিত পাঁচ অক্ষর এক অনুসরণ করা হয় না, এবং তাই তার আক্ষরিক স্ট্রিং মান হিসাবে গণ্য করা হয়।

echo "\\n"

এই ক্ষেত্রে, প্রথম \ একটি দ্বিতীয় দ্বারা অনুসরণ করা হয় \। প্রথমটি দ্বিতীয়টি পালিয়ে যায়, যাতে এটি তার আক্ষরিক স্ট্রিং মান হিসাবে ব্যাখ্যা করা হয়। এটা এখানে নিরর্থক, যেহেতু এটি তার আক্ষরিক স্ট্রিং মান হিসাবে ব্যাখ্যা করা হবে যাহাই হউক না কেন , তবে আপনি যদি লাইনের শেষে একটি ব্যাকস্ল্যাশ মুদ্রণ করতে চান তবে এটি কার্যকর হতে পারে, যেমন:

echo "This is a single backslash:\\"

যেহেতু অন্যথায় ব্যাকস্ল্যাশ শেল দ্বারা escaping হিসাবে ব্যাখ্যা করা হবে "

এই তথ্য সব অংশ থেকে গ্রিল করা যাবে bash ডবল উদ্ধৃতি সম্পর্কে মানুষের পাতা পাওয়া যায় এখানে


0

একটি একক \ তার পরে অবিলম্বে চরিত্রের আক্ষরিক স্ট্রিং মান সংরক্ষণ করে।

তাই এই ক্ষেত্রে:

echo "\\n"

প্রথম \ স্ট্রিং আক্ষরিক সংরক্ষণ করা হয় \ যে আগে মিথ্যা "n"। যদি আপনি নিম্নলিখিত টাইপ করতে হয় ...

echo "\"

... আপনি ইন্টারপ্রেটার দেখতে হবে না, কারণ কমান্ড শেষ করতে হবে "\" একটি স্ট্রিং আক্ষরিক হিসাবে কিন্তু পরিবর্তে একটি "পরবর্তী" চরিত্র অব্যাহতি ব্যবহারকারী ইনপুট জন্য অপেক্ষা করা হবে।

তবে, যদি \ একক উদ্ধৃতি ভিতরে অন্তর্ভুক্ত করা হয়, তারপর কোন পালানোর অক্ষর একক উদ্ধৃতি হিসাবে অপেক্ষা করা হয়, নিজেদের দ্বারা, তারা আধিপত্য যা আক্ষরিক চরিত্র (গুলি) সংরক্ষণ করে।

সুতরাং উদাহরণস্বরূপ: echo '\'

এটি একটি স্ট্রিং আক্ষরিক এবং একটি পাল্টা চরিত্র হিসাবে ব্যাকস্ল্যাশ মুদ্রণ করবে না যাতে ব্যবহারকারীর একটি অক্ষর অন্তর্ভুক্ত করার জন্য দোভাষী অপেক্ষায় থাকবেন না।

এই তথ্য, এবং আরো অনেক কিছু, ব্যাশ ম্যান পৃষ্ঠাতে অন্তর্ভুক্ত করা হয়েছে।


ব্যাকস্ল্যাশ দ্বি উদ্ধৃতির ভিতরে থাকলে আপনার প্রথম বাক্যটি সত্য নয়, এবং কেন ব্যাখ্যা করা হয় না echo "\n" কপি করে প্রিন্ট \n পরিবর্তে n। আমার উত্তর দেখুন।
Chris

একটি ডবল উদ্ধৃতি ভিতরে echo বিবৃতি সত্য যখন -e যুক্তি প্রদান করা হয়। echo -e "\$" হিসাবে একই মুদ্রণ করা হবে echo -e '$'। ব্যাকস্ল্যাশ এটির পরে অবিলম্বে আক্ষরিক স্ট্রিং অক্ষর সংরক্ষণ করে। অর্থ আমার প্রথম বিবৃতি সত্য।
Yokai

একটি ডবল উদ্ধৃতি ভিতরে, ব্যাকস্ল্যাশ শুধুমাত্র $, ", \, এবং` এর আক্ষরিক স্ট্রিং মান সংরক্ষণ করে।
Chris
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.