gpt4 book ai didi

linux - bash:如何从文件或数组构造带引号的参数

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:40 25 4
gpt4 key购买 nike

我需要构造一组参数来传递命令。参数是这样的:

cmd --option 'a b c' --option 'd e f' ...

我已经尝试了所有可能的引用组合,但我没有运气。例如,参见那些失败的尝试。 (假设选项是 -1 并且 cmd 是 ls 以重现)

x[0]="-1 'a b c'"
x[1]="-1 'koko d e > f'"

set -x
ls "${x[@]}"
set +x

这会产生:

+ ls '-1 '\''a b c'\''' '-1 '\''koko d e > f'\'''
ls: invalid option -- ' '

我也试过将参数放在一个文件中:文件 x: -1 'a b c' -1 'koko d e > f'

然后

ls `cat x`
++ cat x
+ ls --color=auto -1 ''\''a' b 'c'\''' -1 ''\''koko' d e '>' 'f'\'''
ls: cannot access 'a: No such file or directory
ls: cannot access b: No such file or directory
...

最佳答案

不要将一个选项及其参数组合成一个词;您的程序期望选项的参数是一个单独的词。

options=("--option" "a b c" "--option" "d e f")
cmd "${options[@]}"

您的 ls 示例有点令人困惑:-1 不需要重复,因为它没有将以下单词作为参数。 > f 不是命令的参数;它是 shell 语法,不应与其他选项结合使用。

关于linux - bash:如何从文件或数组构造带引号的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25888331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com