小编jlu*_*lue的帖子

转义sh/bash函数参数

我想提交带有shell函数参数的多个命令,因此引用我的命令,如:

$ CMD=''\''CMD'\'' '\''ARG1 ARG2 ARG3'\'''
$ echo $CMD
'CMD' 'ARG1 ARG2 ARG3' 'ARG4'
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试在这样的函数中使用它们时:

$ function execute { echo "$1"; echo "$2"; echo "$3"; }
Run Code Online (Sandbox Code Playgroud)

我得到了结果:

$ execute $CMD
'CMD'
'ARG1
ARG2
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到这个结果:

$ execute $CMD
CMD
ARG1 AGR2 ARG3
Run Code Online (Sandbox Code Playgroud)

提前致谢!

PS:我使用了一个不引用的功能,如:

function unquote { echo "$1" | xargs echo; }
Run Code Online (Sandbox Code Playgroud)

编辑:

让我的意图更清楚:我想逐步建立一个需要带有传递给子函数的空格的参数的命令:

$ CMD='HOST '\''HOSTNAME'\'' '\''sh SCRIPTNAME'\'' '\''MOVE '\''\'\'''\''/path/to/DIR1'\''\'\'''\'' '\''\'\'''\''/path/to/DIR2'\''\'\'''\'''\'''
$ function execute { echo "$1 : $2 : $3 : $4"; }
$ execute $CMD
HOST : …
Run Code Online (Sandbox Code Playgroud)

bash shell sh

1
推荐指数
1
解决办法
111
查看次数

标签 统计

bash ×1

sh ×1

shell ×1