与此相关:在bash参数中保留引号
一个简单的例子,我只是用nohup
...运行命令
#!/bin/bash
nohup "$@"
...
./myscript gedit some\ file\ with\ spaces.txt
这很好。但是,我不知道在使用中间变量时如何保留正确的参数位。
#!/bin/bash
CMD="$@"
printf "%q\n" "$CMD" #for debugging
nohup $CMD
我尝试了一些排列,但在所有情况下均无效果。我想念什么?理想情况下,我想能够修改$CMD
之前nohup
。
您需要使用一个数组。
cmd=( "$@" )
printf '%q\n' "${cmd[@]}"
nohup "${cmd[@]}"
标量变量(字符串)是NUL分隔的,因此它们不能包含参数列表(从本质上来说,它是NUL分隔的)。
另请参见数组上的BashSheet条目,BashFAQ#5(说明如何使用数组)和BashFAQ#50(说明由于不这样做而导致的陷阱)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句