Polecenie wykonane w następującym skrypcie działa:
#!/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`
Zasadniczo wykonuje to na zdalnym hoście:
find "/home/jan/rem-dir/" -path *lost+found -prune -o -type f -printf "%P\n"
Ale w jaki sposób należy go zmienić / sformatować, jeśli chcę to w ten sposób:
REM_FILES=`ssh ...`
Lub:
REM_FILES=$(ssh ...)
Chociaż mój obecny skrypt działa dobrze, chciałbym wiedzieć, jak poprawnie uciec / cytować podczas wykonywania skryptów powłoki.
Odpowiedzi:
Lepszym sposobem jest:
Główny problem dotyczył $ SSHOPTS, sztuczka polega na umieszczeniu każdego argumentu w osobnym elemencie tablicy.
@Dennis dziękuje za przydatny link.
źródło