Bashで実行できるように、POSIXで間接変数拡張を実行するためのエレガントなハックはありますか?
コンテキストのために、私は次のことをしようとしています:
for key in ${!map_*}
do
# do something
done
編集:明確にするために、map_
で始まるシェル変数にアクセスしたいと思います。
ハックはeval
を使用することです:
aaa=1
aab=2
aac=3
eval_like() {
pattern=$1
vars=`set |grep "^$pattern.*=" | cut -f 1 -d '='`
for v in $vars; do
eval vval="\$$v"
echo $vval
done
}
for i in `eval_like aa`; do
echo $i
done