引数付きの複数のコマンドをシェル関数に送信したいので、コマンドを彼のように引用します。
$ 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'
3 番目の引数は予期しないスペースで中断され、引用符は無視されます。??