![是否可以编写一个 bash 函数,通过传递目录变量的名称来更改目录?](https://linux22.com/image/1070934/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%20bash%20%E5%87%BD%E6%95%B0%EF%BC%8C%E9%80%9A%E8%BF%87%E4%BC%A0%E9%80%92%E7%9B%AE%E5%BD%95%E5%8F%98%E9%87%8F%E7%9A%84%E5%90%8D%E7%A7%B0%E6%9D%A5%E6%9B%B4%E6%94%B9%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我想编写一个函数,通过传递已经建立的目录变量的名称来改变工作目录,例如:
foo () {
cd $"$1"
}
但是当我尝试,例如,foo links 我得到-bash:cd:links:没有这样的文件或目录
是否有可能做到这一点 ?
答案1
您可以使用变量间接寻址:
foo () {
cd "${!1}"
}
dir=/mnt
foo dir
pwd # /mnt
我想编写一个函数,通过传递已经建立的目录变量的名称来改变工作目录,例如:
foo () {
cd $"$1"
}
但是当我尝试,例如,foo links 我得到-bash:cd:links:没有这样的文件或目录
是否有可能做到这一点 ?
您可以使用变量间接寻址:
foo () {
cd "${!1}"
}
dir=/mnt
foo dir
pwd # /mnt