我想在bash中编写一个函数,将参数转发给cp命令.
例如:
输入
<function> "path/with whitespace/file1" "path/with whitespace/file2" "target path"
我希望它实际上做到:
cp "path/with whitespace/file1" "path/with whitespace/file2" "target path"
但相反,现在我正在实现:
cp path/with whitespace/file1 path/with whitespace/file2 target path
我尝试使用的方法是将所有参数存储在一个数组中,然后只需将cp命令与数组一起运行.
像这样:
function func {
argumentsArray=( "$@" )
cp ${argumentsArray[@]}
}
不幸的是,它没有像我之前提到的那样传输引号,因此副本失败了.
解决方法:
就像$@一样,你需要引用数组扩展.
func () {
argumentsArray=( "$@" )
cp "${argumentsArray[@]}"
}
但是,阵列在这里没有用处;你可以直接使用$@:
func () {
cp "$@"
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。