repo
কমান্ড গ্রাহ্য না করতে কোট কি ধরনের পায়। আপনার যদি প্যারামিটার সম্প্রসারণ প্রয়োজন হয় তবে ডাবল উদ্ধৃতি ব্যবহার করুন। যদি এর অর্থ হল যে আপনি প্রচুর স্টাফ ব্যাকস্ল্যাশ করে চলেছেন তবে এর বেশিরভাগটির জন্য একক উদ্ধৃতি ব্যবহার করুন এবং তারপরে বিচ্ছিন্ন হয়ে the অংশটির দ্বিগুণ হয়ে যান যেখানে আপনার সম্প্রসারণের প্রয়োজন।
repo forall -c 'literal stuff goes here; '"stuff with $parameters here"' more literal stuff'
আপনার আগ্রহী হলে ব্যাখ্যা অনুসরণ করে।
আপনি যখন শেল থেকে একটি কমান্ড চালান, সেই আদেশটি আর্গুমেন্ট হিসাবে কী পায় তা নাল-টার্মিনেটেড স্ট্রিংগুলির একটি অ্যারে। এই স্ট্রিংগুলিতে একেবারে কোনও নন-চরিত্র থাকতে পারে ।
শেল যখন কমান্ড লাইন থেকে স্ট্রিংগুলির সারণী তৈরি করে, তখন এটি কিছু অক্ষরকে বিশেষভাবে ব্যাখ্যা করে; কমান্ডগুলি টাইপ করা সহজ (সত্যই, সম্ভব) তৈরি করার জন্য এটি তৈরি করা হয়েছে। উদাহরণস্বরূপ, স্পেসগুলি সাধারণত অ্যারেতে স্ট্রিংয়ের মধ্যে সীমানা নির্দেশ করে; যে কারণে পৃথক যুক্তিগুলিকে মাঝে মাঝে "শব্দ" বলা হয়। তবে একটি যুক্তির মধ্যে এর মধ্যে ফাঁকা স্থান থাকতে পারে; শেলটি বলার জন্য আপনার কিছু উপায় দরকার যা আপনি চান।
শেলটিকে অক্ষরবশত আচরণ করতে শেলকে বলতে আপনি যে কোনও অক্ষরের (স্পেস বা অন্য কোনও ব্যাকস্ল্যাশ সহ) সামনে একটি ব্যাকস্ল্যাশ ব্যবহার করতে পারেন। তবে আপনি যখন এই জাতীয় কিছু করতে পারেন:
echo \"Thank\ you.\ \ That\'ll\ be\ \$4.96,\ please,\"\ said\ the\ cashier
... এটি ক্লান্তিকর হতে পারে। শেলটি একটি বিকল্প প্রস্তাব করে: উদ্ধৃতি চিহ্নগুলি। এগুলি দুটি প্রধান জাতের মধ্যে আসে।
ডাবল-উদ্ধৃতি চিহ্নগুলিকে "গ্রুপিং কোটস" বলা হয়। এগুলি ওয়াইল্ডকার্ড এবং উপকরণগুলি প্রসারিত হতে বাধা দেয় তবে বেশিরভাগ ক্ষেত্রে তারা একটি শব্দের মধ্যে স্থান অন্তর্ভুক্ত করে। প্যারামিটার এবং কমান্ড সম্প্রসারণের মতো অন্যান্য জিনিস (একটি দ্বারা সংযুক্ত জিনিসগুলির প্রকারের $
) এখনও ঘটে। এবং অবশ্যই যদি আপনি ডাবল-কোটের অভ্যন্তরে আক্ষরিক ডাবল উদ্ধৃতি চান তবে আপনাকে এটির পিছনে পিছনে যেতে হবে:
echo "\"Thank you. That'll be \$4.96, please,\" said the cashier"
একক-উদ্ধৃতি চিহ্নগুলি আরও কঠোর। তাদের মধ্যে সমস্ত কিছুই ব্যাকস্ল্যাশ সহ পুরোপুরি আক্ষরিক অর্থে নেওয়া হয়। একক উদ্ধৃতিতে আক্ষরিক একক উদ্ধৃতি পাওয়ার কোনও উপায় নেই।
ভাগ্যক্রমে, শেলের কোটেশন চিহ্নগুলি শব্দের বিসর্জনকারী নয় ; তাদের দ্বারা, তারা একটি শব্দও শেষ করে না। পছন্দসই ফলাফলটি পেতে আপনি একই শব্দের মধ্যে বিভিন্ন ধরণের উদ্ধৃতি সহ উদ্ধৃতিগুলির ভিতরে এবং বাইরে যেতে পারেন:
echo '"Thank you. That'\''ll be $4.96, please," said the cashier'
সুতরাং এটি সহজ - অনেক কম ব্যাকস্ল্যাশস, যদিও ক্লোজ-সিঙ্গল-কোট, ব্যাকস্ল্যাশড-আক্ষরিক-একক-উদ্ধৃতি, ওপেন-সিঙ্গল-কোট ক্রমটি কিছুটা অভ্যস্ত হয়ে উঠবে।
আধুনিক শেলগুলি পসিক্স স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট না করে আরও একটি উদ্ধৃতি শৈলী যুক্ত করেছে, যেখানে শীর্ষস্থানীয় একক উদ্ধৃতি চিহ্নটি ডলারের চিহ্ন সহ উপস্থাপিত হয়েছে। স্ট্রিংগুলি উদ্ধৃত এএনএসআই সি প্রোগ্রামিং ভাষায় স্ট্রিং লিটারেলের অনুরূপ কনভেনশন অনুসরণ করে এবং তাই কখনও কখনও "এএনএসআই স্ট্রিংস" এবং $'
... '
জোড় "এএনএসআই কোটস" নামে পরিচিত। এই ধরনের স্ট্রিংগুলির মধ্যে, ব্যাকস্ল্যাশগুলি সম্পর্কে আক্ষরিকভাবে গ্রহণের উপরের পরামর্শটি আর কার্যকর হয় না। পরিবর্তে, তারা আবার বিশেষ হয়ে ওঠে - আপনি কেবল এটির ব্যাকস্ল্যাশ প্রিডিং করে কেবল আক্ষরিক একক উদ্ধৃতি চিহ্ন বা ব্যাকস্ল্যাশকে অন্তর্ভুক্ত করতে পারবেন না, তবে শেলটি এএনএসআই সি অক্ষরটি পলায়নের প্রসারকেও প্রসারিত করে ( \n
নতুন লাইনের \t
জন্য, ট্যাবের \xHH
জন্য এবং অক্ষরের সাথে অক্ষরের জন্য) হেক্সাডেসিমাল কোডHH
)। অন্যথায়, তারা একক-উদ্ধৃত স্ট্রিং হিসাবে আচরণ করে: কোনও প্যারামিটার বা কমান্ড প্রতিস্থাপন হয় না:
echo $'"Thank you. That\'ll be $4.96, please," said the cashier'
গুরুত্বপূর্ণ বিষয়টি লক্ষ্যণীয় হ'ল echo
কমান্ডের যুক্তি হিসাবে একক স্ট্রিংটি পাওয়া গেছে এই উদাহরণগুলির মধ্যে একই is শেলটি একটি কমান্ড লাইনের পার্সিং করার পরে, কমান্ডটি চালিত হওয়ার উপায় নেই যে কীভাবে উদ্ধৃত হয়েছিল। এমনকি যদি এটি চেয়েছিল।
repo forall -c ' ...before... '"$variable"' ...after...'