我想提交带有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)