在bash参数中保留转义$@

在bash参数中保留转义$@,bash,escaping,Bash,Escaping,与此相关: 一个简单的例子,我只是用nohup运行一个命令 #!/bin/bash nohup "$@" ... ./myscript gedit some\ file\ with\ spaces.txt 这个很好用。但是,我不知道如何在使用中间变量时保留正确的转义参数位 #!/bin/bash CMD="$@" printf "%q\n" "$CMD" #for debugging nohup $CMD 我尝试了一些排列,但在所有情况下都不起作用。我错过了什么?理想情况下,我希望能够在

与此相关:

一个简单的例子,我只是用
nohup
运行一个命令

#!/bin/bash
nohup "$@"

...

./myscript gedit some\ file\ with\ spaces.txt
这个很好用。但是,我不知道如何在使用中间变量时保留正确的转义参数位

#!/bin/bash
CMD="$@"
printf "%q\n" "$CMD" #for debugging
nohup $CMD

我尝试了一些排列,但在所有情况下都不起作用。我错过了什么?理想情况下,我希望能够在需要使用数组之前修改
$CMD

cmd=( "$@" )
printf '%q\n' "${cmd[@]}"
nohup "${cmd[@]}"
标量变量(字符串)是NUL分隔的,因此它们不能包含参数列表(本质上是NUL分隔的)


另请参见(解释如何使用数组)和(解释不这样做所导致的陷阱)。

竖起大拇指,以获取BashFaqs的参考,竖起大拇指,阻止我因类似问题拔头发。