Como citar um comando entre backticks quando o shell script

0

O comando executado no script a seguir funciona:

#!/bin/bash -xv
REM_DIR="/home/jan/rem-dir"
SSHOPTS="-C -c arcfour256 -o "\""ServerAliveInterval 15"\"
SSHUSER="[email protected]"

CMD="ssh $SSHOPTS \"$SSHUSER\" \"find \\"$REM_DIR/\\" -path *lost+found -prune -o -type f -printf \\"%P\\n\\"\""
REM_FILES='eval $CMD'

Basicamente, ele executa isso no host remoto:

find "/home/jan/rem-dir/" -path *lost+found -prune -o -type f -printf "%P\n"

Mas como deve ser escapado / formatado se eu quiser assim:

REM_FILES='ssh ...'

Ou:

REM_FILES=$(ssh ...)

Embora meu script atual seja executado corretamente, gostaria de saber como escapar / citar corretamente quando o shell script estiver sendo usado.

    
por Jan 13.07.2012 / 16:14

1 resposta

1

A melhor maneira é:

#!/bin/bash -xv
REM_DIR="/home/jan/rem-dir"
SSHOPTS=(-C -c arcfour256 -o "ServerAliveInterval 15")
SSHUSER="[email protected]"

REM_FILES='ssh "${SSHOPTS[@]}" "$SSHUSER" "find \"$REM_DIR/\" -path \"*lost+found\" -prune -o -type f -printf \"%P\n\""'

O principal problema foi com $ SSHOPTS, o truque é colocar cada argumento em um elemento separado de um array.

@Dennis agradece pelo link útil.

    
por 14.07.2012 / 13:49