linux – bash – 用引号括起所有数组元素或参数

我想在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] 举报,一经查实,本站将立刻删除。

相关推荐