${!FOO}
এতে একটি ডাবল প্রতিস্থাপন সম্পাদন করে bash
, এর অর্থ এটি FOO এর (স্ট্রিং) মান গ্রহণ করে এবং এটি একটি পরিবর্তনশীল নাম হিসাবে ব্যবহার করে।
zsh
এই বৈশিষ্ট্য সমর্থন করে না।
এই কাজটি একই রকম করার কোনও উপায় কি bash
এবং zsh
?
পটভূমি:
আমি যেমন পরিবেশের ভেরিয়েবলের একটি তালিকা পেয়েছি
PATH MAIL EDITOR
এবং প্রথমে ভেরিয়েবলের নাম এবং তার মানগুলি মুদ্রণ করতে চাই।
এটি এতে কাজ করে bash
তবে তা নয় zsh
:
for VAR in LIST
do
echo $VAR
echo ${!VAR}
done
এটি কোনওভাবেই "পুরানো পথ" দিয়ে হওয়া উচিত eval
, তবে আমি এটি কাজ করতে পারি না:
for VAR in LIST
do
echo $VAR
echo `eval \$$VAR`
done
আমি কখনই বুঝতে চাইছি না কেন আমি অনিয়মিত গভীর প্রতিস্থাপনের মতো ${${VAR}}
বা ${${${VAR}}}
প্রয়োজনের পরেও করতে পারি না , তাই এর ব্যাখ্যাও খুব সুন্দর হবে।
bash
এটি নিয়ে বড়াই করার দরকার নেই , এটির একই কার্যকারিতা রয়েছে (এবং আরও অনেক কিছু), কেবলমাত্র একটি ভিন্ন প্যাটার্ন ব্যবহার করে ${(p)FOO}
।
(e)
প্যারামিটার সম্প্রসারণ পতাকাটি zsh-2.6-beta17 (মে 1996) এ যুক্ত করা হয়েছিল, (P)
পতাকাটি 3.1.5-pws-7 (1999) এ ছিল। বাশ এর ${!var}
2.0 (ডিসেম্বর 1996) এ।