${!FOO}içinde bir çift yerine koyma gerçekleştirir bash, yani FOO'nun (string) değerini alır ve değişken adı olarak kullanır.
zshbu özelliği desteklemiyor.
Bu çalışmayı aynı şekilde yapmanın bir yolu var mı bashve zsh?
Arka fon:
Ortam değişkenlerinin bir listesi var.
PATH MAIL EDITOR
önce değişken adlarını sonra da değerlerini yazdırmak istersiniz.
Bu çalışıyor bashancak çalışmıyor zsh:
for VAR in LIST
do
echo $VAR
echo ${!VAR}
done
Bir şekilde “eski yol” ile mümkün olmalı eval, ama işe yarayamıyorum:
for VAR in LIST
do
echo $VAR
echo `eval \$$VAR`
done
Neden böyle ${${VAR}}veya ${${${VAR}}}gerektiğinde bile keyfi olarak derin ikameler yapamayacağımı asla anlamayacağım , bunun için bir açıklama da iyi olurdu.
bash, gerçekten aynı işleve (ve çok daha fazlasına) sahip, sadece farklı bir desen kullanıyor, yani ${(p)FOO}.
(e)parametre genişletme bayrağı zsh-2.6-beta17 (Mayıs 1996), (P)bayrak 3.1.5-pws-7 (1999) 'da eklendi. bash ${!var}2.0'da (Aralık 1996).