【发布时间】:2014-12-14 19:35:24
【问题描述】:
我在尝试编写一个将文件移动到指定文件夹的简单 bash 函数时遇到了麻烦。我写的代码如下:
mv_file() {
DESTINATION_FOLDER="~/Whatever"
mv $1 $DESTINATION_FOLDER
}
但问题是 $1 经常包含转义字符,例如 ~/\[Bracketed\]File,当传递给 $1 时不再包含 \ 字符并最终寻找 ~/[Bracketed]File 这不是一个有效的文件/小路。我已经完成了关于这个主题的其他问题,但我认为解决方案与这个问题无关。有什么建议吗?
【问题讨论】:
-
不会引用变量对此有帮助吗?
mv "$1" $DESTINATION_FOLDER -
不,不幸的是,当我引用它时,正斜杠仍然不存在。例如当我
echo "$1"我得到~/[Bracketed]File:( -
那么我猜你需要 pass 到引号中的命令行参数。例如。
yourscript.sh "~/\[Bracketed\]File". -
嗯,我明白了,但这会以自动填充为代价,这会很麻烦。我可以自动填充,然后用引号括起来,但没有更好的方法吗?
-
我真的不明白你关于自动填充的观点。这个脚本是否以某种方式自动化?源文件夹参数是用户提供的值吗?
标签: bash escaping special-characters argument-passing