変数名が与えられたら、その値を印刷する関数はありますか?
変数名を何度も bash 関数に渡し、変数を渡すときに拡張するのではなく、関数内で拡張したいと思います。もちろん、これは最終的に変数名を含む文字列を作成してexecを実行する必要があります。出力をエコーするコマンドを実行できれば、もっときれいになります!
答え1
show_val() { echo "${!1}"; }
foo=bar
echo $(show_val foo) # => bar
# works with arrays too
a=(zero one two)
echo $(show_val a[1]) # => one
bashのマニュアルに文書化されています。ここ
答え2
「execの実行」に関する質問が何を意味するのかわかりません。おそらく評価を意味するようです。
show_val() { 評価エコー \$$1 } 金持ち=バー show_val foo