是否可以编写一个 bash 函数,通过传递目录变量的名称来更改目录?

是否可以编写一个 bash 函数,通过传递目录变量的名称来更改目录?

我想编写一个函数,通过传递已经建立的目录变量的名称来改变工作目录,例如:

foo () {
   cd $"$1"
}

但是当我尝试,例如,foo links 我得到-bash:cd:links:没有这样的文件或目录

是否有可能做到这一点 ?

答案1

您可以使用变量间接寻址:

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

dir=/mnt
foo dir
pwd  # /mnt

相关内容