我想在bash中编写一个将参数转发到cp命令的函数。例如:输入
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 "$@" }