我想向 shell 函数提交多个带有参数的命令,从而引用我的命令,如他的:
$ CMD=''\''CMD'\'' '\''ARG1 ARG2 ARG3'\'''
$ echo $CMD
'CMD' 'ARG1 ARG2 ARG3' 'ARG4'
现在,当我尝试在这样的函数中使用它们时:
$ function execute { echo "$1"; echo "$2"; echo "$3"; }
我得到结果:
$ execute $CMD
'CMD'
'ARG1
ARG2
我怎样才能得到这个结果:
$ execute $CMD
CMD
ARG1 AGR2 ARG3
提前致谢!
PS:我使用取消引用功能,例如:
function unquote { echo "$1" | xargs echo; }
编辑:
为了让我的意图更清楚:我想逐步建立一个需要参数的命令,其中包含传递给子函数的空格:
$ CMD='HOST '\''HOSTNAME'\'' '\''sh SCRIPTNAME'\'' '\''MOVE '\''\'\'''\''/path/to/DIR1'\''\'\'''\'' '\''\'\'''\''/path/to/DIR2'\''\'\'''\'''\'''
$ function execute { echo "$1 : $2 : $3 : $4"; }
$ execute $CMD
HOST : 'HOSTNAME' : 'sh : SCRIPTNAME'
第三个参数在空格处意外中断,引用被忽略。??