我想在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[@]}
}
不幸的是,它并没有像我之前提到的那样转移报价,因此复制失败。
答案 0 :(得分:5)
就像$@
一样,您需要引用数组扩展。
func () {
argumentsArray=( "$@" )
cp "${argumentsArray[@]}"
}
然而,阵列在这里没有用处;您可以直接使用$@
:
func () {
cp "$@"
}