কমান্ডের আউটপুট দ্বারা ব্যাকটিক্সের মধ্যে পাঠ্য সম্পাদন করা হয় এবং প্রতিস্থাপন করা হয় (মাইনাস ট্রেইলিং নতুন লাইনের অক্ষরগুলি, এবং সাবধান থাকুন যে আউটপুটে NUL অক্ষর থাকলে শেল আচরণগুলি আলাদা হয়)। এটিকে কমান্ড প্রতিস্থাপন বলা হয় কারণ এটি কমান্ডের আউটপুট দ্বারা প্রতিস্থাপিত হয়। সুতরাং আপনি যদি 5 টি মুদ্রণ করতে চান, আপনি ব্যাকটিক্স ব্যবহার করতে পারবেন না, আপনি কোটেশন চিহ্নগুলি ব্যবহার করতে পারেন, যেমন echo "$b"
বা কেবল কোনও উদ্ধৃতি ব্যবহার এবং ব্যবহার করতে পারেন echo $b
।
আপনি দেখতে পাচ্ছেন যেহেতু $b
5 টি রয়েছে, ব্যাকটিক্স ব্যবহার bash
করার সময় কমান্ড চালানোর চেষ্টা করা হচ্ছে 5
এবং যেহেতু এই জাতীয় কোনও আদেশ নেই তাই এটি ত্রুটি বার্তায় ব্যর্থ হয়।
ব্যাকটিকস কীভাবে কাজ করে তা বোঝার জন্য এটি চালানোর চেষ্টা করুন:
$ A=`cat /etc/passwd | head -n1`
$ echo "$A"
cat /etc/passwd |head -n1
/etc/passwd
ফাইলের প্রথম লাইন মুদ্রণ করা উচিত । তবে যেহেতু আমরা ব্যাকটিকগুলি ব্যবহার করি, এটি কনসোলে এটি মুদ্রণ করে না। পরিবর্তে এটি A
পরিবর্তনশীল সংরক্ষণ করা হয়। আপনি এটি প্রতিধ্বনি $A
করতে পারেন । নোট করুন যে প্রথম লাইনের মুদ্রণের আরও কার্যকর উপায় কমান্ডটি ব্যবহার করছে head -n1 /etc/passwd
তবে আমি উল্লেখ করতে চেয়েছিলাম যে ব্যাকটিক্সের অভ্যন্তরে প্রকাশটি সহজ হতে হবে না।
সুতরাং / etc / passwd এর প্রথম লাইনটি যদি প্রথম root:x:0:0:root:/root:/bin/bash
কমান্ডটি গতিশীলভাবে bash to দ্বারা প্রতিস্থাপন করা হবে A="root:x:0:0:root:/root:/bin/bash"
।
মনে রাখবেন যে এই বাক্য গঠনটি বোর্ন শেলের। উদ্ধৃতি দেওয়া এবং পালানো এটিকে দ্রুত একটি দুঃস্বপ্ন হয়ে ওঠে বিশেষত যখন আপনি তাদের বাসা বাঁধতে শুরু করেন। Ksh $(...)
বিকল্পটি চালু করেছে যা বর্তমানে মানক ( POSIX ) এবং সমস্ত শেল (এমনকি ইউনিক্স ভি 9 এর বোর্ন শেল) দ্বারা সমর্থিত। সুতরাং আপনার $(...)
পরিবর্তে আজকাল ব্যবহার করা উচিত যদি না আপনি খুব পুরানো বোর্ন শেলগুলি পোর্টেবল করার প্রয়োজন না হন।
এছাড়াও মনে রাখবেন আউটপুট `...`
এবং $(...)
শব্দ বিভাজন এবং মাত্র (শুধুমাত্র zsh, শব্দ বিভাজন) পরিবর্তনশীল সম্প্রসারণ মত ফাইলের নাম প্রজন্ম সাপেক্ষে, তাই সাধারণত তালিকা প্রেক্ষিতে উদ্ধৃত করা প্রয়োজন হবে।