ディレクトリ変数の名前を渡してディレクトリを変更する bash 関数を作成することは可能ですか?

ディレクトリ変数の名前を渡してディレクトリを変更する bash 関数を作成することは可能ですか?

次のように、すでに確立されているディレクトリ変数の名前を渡して作業ディレクトリを変更する関数を記述したいと思います。

foo () {
   cd $"$1"
}

しかし、例えばfoo linksを試みると、-bash: cd: links: No such file or directoryというメッセージが表示されます。

これは可能ですか?

答え1

変数間接参照を使用できます:

foo () {
    cd "${!1}"
}

dir=/mnt
foo dir
pwd  # /mnt

関連情報