我正在尝试在我的 .bashrc 中编写一个 bash 函数,它复制目录中的多个文件并进入该目录,问题是它复制了文件但没有进入目录并说:“省略目录” cpcd()if [ -d "${!#}" ] then cp "$@" "${!#}" && cd "${!#}" && ls else print "last argument is not a directory or does not exist" fi
答案1
当你这样做时:
cp "$@" "${!#}"
其效果是重复最后一个参数(目录名)。
因此,我认为您想要的可能是这个(只需删除"${!#}"
):
cp "$@"
另一个问题是你说它没有进入目录。你刚刚正常执行的脚本不会改变你当前的工作目录;如果你想要这样做,你需要改为执行脚本。因此,不要像这样运行它:
./yourscript.sh [arguments]
然后你可以像这样获取它:
. yourscript.sh [arguments]