gpt4 book ai didi

bash - 如何回显 "$@"以便结果是有效的 bash 并保持正确的引用?

转载 作者:行者123 更新时间:2023-12-03 15:01:18 26 4
gpt4 key购买 nike

我该放什么 wrapper.sh ,如果我想要这个:

wrapper.sh "hello world" arg2 '' "this ' thing"
输出:
Now please run:
other-command "hello world" arg2 '' "this ' thing"
我意识到原始报价丢失并且输出可能会以不同的方式引用并且很好,只要 other-command当命令被剪切'n'粘贴到 shell 时,获取正确的参数。
我知道 "$@"这适用于调用其他程序,但不适用于将有效的 bash 回显到 STDOUT据我所知。
这看起来不错,但需要 Perl 和 String::ShellQuote (我想避免):
$ perl -MString::ShellQuote -E 'say shell_quote @ARGV' other-command "hello world" arg2 '' "this ' thing"
other-command 'hello world' arg2 '' 'this '\'' thing'
这不起作用 - 请注意零长度 arg 是如何丢失的:
$ perl -E 'say join(" ", map { quotemeta $_ } @ARGV)' other-command "hello world" arg2 '' "this ' thing"
other\-command hello\ world arg2 this\ \'\ thing
再次,我想避免使用 Perl 或 Python ...

最佳答案

您可以使用 @Q参数变换。

$ set -- "hello world" arg2 '' 'this " thing'
$ echo other-command "${@@Q}"
other-command 'hello world' 'arg2' '' 'this " thing'

关于bash - 如何回显 "$@"以便结果是有效的 bash 并保持正确的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65844941/

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