Uciekająca zmienna w Cat

5

Próbuję napisać skrypt powłoki przez ssh za pomocą zachęty bash. Powłoka nalega jednak na interpretację dowolnej zmiennej, którą chcę napisać, zamiast zapisywać ją bezpośrednio do pliku. Na przykład, cat <<EOF >checkup.sh\n'$command'EOF jest po prostu napisane jako '' do pliku. Jak mogę uzyskać $command zamiast tego napisać? Próbowałem każdej praktycznej metody ucieczki, o której mogę pomyśleć.

Jeśli coś zmieni, robię to za pomocą PHP phpseclib .

Peter Kazazes
źródło

Odpowiedzi:

7

Spróbuj zacytować pierwszy EOF, np.

cat <<'EOF'
>checkup.sh\n'$command'
EOF

Zostało to wyjaśnione na stronie man bash (1) w sekcji Here Documents.

garyjohn
źródło
Właściwie potrzebowałem INVERSE tego (miałem skrypt z „EOF”, potrzebny do obsługi zmiennych) i to wskazało na to. Dzięki!
Samurai Ken