কমান্ড প্রতিস্থাপন কমান্ডের নামের পরিবর্তে একটি কমান্ডের আউটপুট প্রতিস্থাপন করতে দেয়। কমান্ড প্রতিস্থাপন ঘটবে যখন কমান্ডটি নিম্নরূপে আবদ্ধ থাকে:
$(command)
বা (ব্যাককোটেড সংস্করণ):
`command`
শেল নির্বাহ দ্বারা কমান্ড প্রতিকল্পন প্রসারিত হইবে কমান্ড
একটি subshell পরিবেশে (দেখুন শেল এক্সেকিউশন এনভায়রনমেন্টের এবং কমান্ড প্রতিকল্পন (টেক্সট প্রতিস্থাপন) কমান্ড কমান্ড মান আউটপুট প্লাস এনক্লোজিং "$ ()" বা backquotes), অপসারণ <newline>
প্রতিস্থাপনের শেষে এক বা একাধিক অক্ষরের ক্রম । এমবেডেড<newline>
আউটপুট শেষ হওয়ার আগে অক্ষরগুলি সরানো হবে না; তবে, ফিল্ড বিভাজনের সময় এগুলি ফিল্ড ডিলিমিটার হিসাবে বিবেচনা করা যেতে পারে এবং আইএফএসের মান এবং কার্যকর হয় এমন উদ্ধৃতি নির্ধারণের উপর নির্ভর করে নির্মূল করা যেতে পারে। যদি আউটপুটে কোনও নাল বাইট থাকে তবে আচরণটি অনির্দিষ্ট।
কমান্ড প্রতিস্থাপনের ব্যাককোটিড স্টাইলের মধ্যে, <backslash>
এর আক্ষরিক অর্থ বজায় রাখা উচিত, তারপরে ব্যতীত: ' $
', ' `
', বা
<backslash>
। মিলে যাওয়া ব্যাককোটির জন্য অনুসন্ধানটি প্রথম অনাবৃত অ-পালানো ব্যাককোট দ্বারা সন্তুষ্ট হবে; এই অনুসন্ধানের সময়, যদি শেল মন্তব্য, একটি এখানে-নথি, $ ( কমান্ড ) ফর্মের একটি এম্বেড করা কমান্ড প্রতিস্থাপন , বা উদ্ধৃত স্ট্রিংয়ের মধ্যে যদি কোনও অব্যাহতিপ্রাপ্ত ব্যাককোটের মুখোমুখি হয় তবে অপরিজ্ঞাত ফলাফল আসে। একটি একক-উদ্ধৃত বা ডাবল-কোটেড স্ট্রিং শুরু হয়, তবে শেষ হয় না, `...`
ক্রমটির মধ্যেই অপরিবর্তিত ফলাফল আসে।
$ ( কমান্ড ) ফর্মের সাহায্যে মেলা বন্ধ হওয়া বন্ধনীতে ওপেন বন্ধনী অনুসরণকারী সমস্ত অক্ষর কমান্ডটি গঠন করে
। কমান্ডের জন্য কোনও বৈধ শেল স্ক্রিপ্ট ব্যবহার করা যেতে পারে , কেবলমাত্র পুনর্নির্দেশের সমন্বিত স্ক্রিপ্ট ব্যতীত যা অনির্ধারিত ফলাফল দেয়।
কিল্ড প্রসারণ, প্যারামিটার সম্প্রসারণ, কমান্ড প্রতিস্থাপন, বা পাটিগণিতের সম্প্রসারণের জন্য কমান্ড প্রতিস্থাপনের ফলাফলগুলি প্রক্রিয়া করা হবে না। যদি কোনও কমান্ড প্রতিস্থাপন ডাবল-কোটের মধ্যে ঘটে তবে ক্ষেত্র বিভাজন এবং পথের নাম প্রসারণ বিকল্পের ফলাফলের জন্য করা হবে না।
কমান্ড প্রতিস্থাপন বাসা বাঁধতে পারে। ব্যাককোটিড সংস্করণে নেস্টিং নির্দিষ্ট করার জন্য, অ্যাপ্লিকেশনটি <backslash>
অক্ষরের সাথে অভ্যন্তরীণ ব্যাককোটিসের আগে হবে ; উদাহরণ স্বরূপ:
\`command\`
শেল কমান্ড ভাষার সিনট্যাক্সের সাথে বিস্তৃতকরণের জন্য একটি স্পষ্টতা রয়েছে "$((
", এটি পাটিগণিত সম্প্রসারণ বা একটি কমান্ড বিকল্পের সাথে পরিচয় করিয়ে দিতে পারে যা সাবসেলের সাথে শুরু হয় Ar প্রতিস্থাপন যদি এটি নির্ধারণ করে যে এটি পাথের গাণিতিক সম্প্রসারণ হিসাবে প্রসারণকে পার্স করতে পারে না performing এই সংকল্পটি সম্পাদন করার সময় শেলটি নেস্টেড বিস্তারের মূল্যায়ন করতে হবে না it শেল একটি অসম্পূর্ণ গাণিতিক সম্প্রসারণ যেমন সম্প্রসারণ আচরণ এবং একটি বাক্য গঠন ত্রুটি প্রতিবেদন হইবে। একজন অনুসারী আবেদন নিশ্চিত করতে হবে যে এটা আলাদা " $(
" এবং '(
'দুটি টোকেন (যেটি সাদা স্থানের সাথে পৃথক করুন) এর মধ্যে একটি কমান্ড প্রতিস্থাপনে শুরু হয় যা একটি সাবশেল দিয়ে শুরু হয়। উদাহরণস্বরূপ, একটি কমান্ড সাবস্টিটিউশন সহ একটি একক সাবশেল লিখতে পারে:
$( (command) )
$()
পসিক্স এবং সমস্ত আধুনিক বোর্ন শেল যেমন: ksh, বাশ, অ্যাশ, ড্যাশ, জেডএস, ব্যস্তবক্স, আপনি এটির নাম দ্বারা সমর্থিত। (এতটা আধুনিক কোনও সোলারিস নয়/bin/sh
, তবে সোলারিতে আপনি/usr/xpg4/bin/sh
পরিবর্তে আধুনিকটি ব্যবহারের বিষয়টি নিশ্চিত করবেন )।