Ist es möglich, eine Bash-Funktion zum Ändern des Verzeichnisses durch Übergeben des Namens einer Verzeichnisvariablen zu schreiben?

Ist es möglich, eine Bash-Funktion zum Ändern des Verzeichnisses durch Übergeben des Namens einer Verzeichnisvariablen zu schreiben?

Ich möchte eine Funktion schreiben, die das Arbeitsverzeichnis ändert, indem sie den Namen einer bereits festgelegten Verzeichnisvariablen übergibt, wie:

foo () {
   cd $"$1"
}

Wenn ich jedoch beispielsweise „foo links“ versuche, erhalte ich die Meldung „-bash: cd: links: Keine solche Datei oder kein solches Verzeichnis vorhanden“

Ist es möglich, das zu tun?

Antwort1

Sie können die Variablenindirektion verwenden:

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

dir=/mnt
foo dir
pwd  # /mnt

verwandte Informationen