Можно ли написать функцию bash для смены каталога, передав имя переменной каталога?

Можно ли написать функцию bash для смены каталога, передав имя переменной каталога?

Я хочу написать функцию, которая изменяет рабочий каталог, передавая имя переменной каталога, которая уже была установлена, например:

foo () {
   cd $"$1"
}

Однако когда я пробую, например, foo links, я получаю -bash: cd: links: Такого файла или каталога нет

Можно ли сделать это ?

решение1

Вы можете использовать косвенную адресацию переменных:

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

dir=/mnt
foo dir
pwd  # /mnt

Связанный контент