অন্যান্য উত্তরগুলির কয়েকটিতে সংযোজন এবং স্পষ্টতা সরবরাহ করতে, আপনি যদি exec
বা execdir
( -exec command {} +
) এর জন্য বাল্ক বিকল্পটি ব্যবহার করে থাকেন এবং সমস্ত অবস্থানগত যুক্তি পুনরুদ্ধার করতে চান তবে আপনার $0
সাথে সামঞ্জস্য করার বিষয়টি বিবেচনা করা উচিত bash -c
। আরও দৃ concrete়তার সাথে, নীচের কমান্ডটি বিবেচনা করুন, যা bash -c
উপরের পরামর্শ অনুযায়ী ব্যবহার করে এবং প্রতিটি ডিরেক্টরি থেকে '.wav' দিয়ে শেষ হওয়া ফাইল পাথগুলি প্রতিধ্বনিত করে:
find "$1" -name '*.wav' -execdir bash -c 'echo $@' _ {} +
বাশ ম্যানুয়ালটি বলে:
If the -c option is present, then commands are read from the first non-option argument command_string. If there are arguments after the command_string, they are assigned to the
positional parameters, starting with $0.
এখানে, 'check $@'
কমান্ড স্ট্রিং এবং _ {}
কমান্ড স্ট্রিংয়ের পরে যুক্তি রয়েছে। দ্রষ্টব্য যে $@
ব্যাশের একটি বিশেষ অবস্থানিক পরামিতি যা 1 থেকে শুরু করে সমস্ত অবস্থানগত পরামিতিগুলিতে প্রসারিত হয় । এছাড়াও নোট করুন যে -c
বিকল্পের সাথে প্রথম যুক্তিটি অবস্থানগত প্যারামিটারে নির্ধারিত হয় $0
। এর অর্থ এই যে আপনি যদি অবস্থানগত পরামিতিগুলির সাথে সমস্তটি অ্যাক্সেস করার চেষ্টা করেন তবে আপনি $@
কেবলমাত্র পরামিতিগুলি শুরু থেকে শুরু $1
করবেন। এই কারণেই ডোমিনিকের উত্তরটিতে _
প্যারামিটারটি পূরণ করার জন্য একটি ছদ্মবেশী যুক্তি রয়েছে $0
, তাই আমরা চাইলে সমস্ত যুক্তিই পরে ব্যবহার করা যায় যদি আমরা ব্যবহার করি$@
উদাহরণস্বরূপ প্যারামিটার সম্প্রসারণ , বা সেই উত্তর হিসাবে লুপের জন্য।
অবশ্যই, গৃহীত উত্তরের অনুরূপ, bash -c 'shell_function $0 $@'
স্পষ্টভাবে পাস দিয়েও কাজ করবে $0
, তবে আবারও আপনাকে মনে রাখতে হবে যা $@
প্রত্যাশার মতো কাজ করবে না।
$0
।