সর্বশেষ অবস্থানগত প্যারামিটার সেট আপ করার চেষ্টা করার সময় /bin/dash, আমি চেষ্টা করেছি echo ${$#}। আশ্চর্যজনকভাবে এর ফলে কোনও ত্রুটি ঘটেনি, তবে পিআইডি-তে পরিণত হয়েছে যা $$ভেরিয়েবলের সামগ্রী হিসাবে সমান । প্রশ্ন, কেন সেই সিনট্যাক্সটি কাজ করেছিল? শেলটি এখানে প্রয়োগ করা সিনট্যাক্স নিয়ম কী?
মূলত, আমি যা করেছি তা হ'ল
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
স্পষ্টতই, এই %ধরনের নির্মাণে চরিত্রও উপেক্ষা করা হয়
$ echo ${$%}
13819
কিন্তু *এবং @খারাপ প্রতিস্থাপনের ত্রুটির ফলস্বরূপ:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
#এবং %কি থেকে আচরণ ফলাফল নেই।
eval, যেমন , ব্যবহার করুন dash -c 'set 1 2 3 4 5; eval "echo \$$#"'। সূত্র: উবুন্টু উইকি
for i; do true; doneশেষ আইটেমটি পেতে জানতাম $i) তবে আরও মার্জিত কিছু খুঁজছিলাম। evalঅবশ্যই সম্ভাব্য সমস্যা থাকতে পারে, কতটা ভাবল - এটি অন্য একটি বিষয়। তবে হ্যাঁ, এটি একটি বিকল্প
${$*}এবং${$@}উত্পাদন করবেন?