gpt4 book ai didi

bash - 在 "$@"扩展中转义逗号

转载 作者:行者123 更新时间:2023-11-29 09:15:28 24 4
gpt4 key购买 nike

"$@" 似乎让 , 消失了。例如

param="123 1,2"
set echo $param
"$@"

这将回显“123 1 2”而不是“123 1,2”,但在某些情况下,, 需要作为命令的值。

这似乎与 bash 版本有关,对于 bash 4.1.2,结果是正确的,但是对于 4.2.46,逗号丢失。


编辑:

简而言之,也许是 nice 责备:

我做了 unset IFS 并且在终端中我提供的测试用例工作正常,但我的脚本没有。

我实际上是在编写一个初始化脚本,我检查了 /etc/init.d/functions 中的 action() 函数,并添加了一些调试代码:

echo "$@" # added by me
unset IFS # added by me
"$@" && success $"$STRING" || failure $"$STRING"

回显的命令是正确的(nice -n -10 ovs-vswitchd ... --socket-mem 1024,1024),但在 ps 中结果是nice 执行的实际命令变为 ovs-vswitchd ... --socket-mem 1024 1024

我开始想也许很好责备。

最佳答案

请在拆分参数之前(在命令 set 之前)直接在脚本中设置 IFS。例如做这样的事情:

oldIFS=$IFS
param="123 1,2"
IFS=" " # put tabs and or newline if also wanted.
set echo $param
IFS=$oldIFS
"$@"

无论您之前的 IFS 是什么,这都会起作用。

关于bash - 在 "$@"扩展中转义逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763442/

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