সর্বশেষ অবস্থানগত প্যারামিটার সেট আপ করার চেষ্টা করার সময় /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
অবশ্যই সম্ভাব্য সমস্যা থাকতে পারে, কতটা ভাবল - এটি অন্য একটি বিষয়। তবে হ্যাঁ, এটি একটি বিকল্প
${$*}
এবং${$@}
উত্পাদন করবেন?