Mam ten ciąg wieloliniowy (w tym cytaty):
abc'asdf"
$(dont-execute-this)
foo"bar"''
Jak przypisałbym ją do zmiennej za pomocą heredoc w Bash?
Muszę zachować nowe linie.
Nie chcę uciec od znaków w ciągu, co byłoby denerwujące ...
"EOF"
zmiennej podwójnie qouted , jeśli zostanie wywołane przez eval $VAR
, spowoduje skomentowanie całej reszty skryptu, ponieważ tutaj $ VAR będzie widoczny jako pojedynczy wiersz ; aby móc używać #
komentarzy bash w skrypcie wielowierszowym, podwójny cudzysłów również zmienny w eval call:
ewaluacji „$ VAR”.
eval
tymi metodami, ale nie wyśledziłem go, ponieważ był on częścią jakiegoś pakietu, który zawiera eval
pewne zmienne zdefiniowane w jego pliku konfiguracyjnym. Komunikat o błędzie: /usr/lib/network/network: eval: line 153: syntax error: unexpected end of file
. Właśnie przeszedłem na inne rozwiązanie.
'EOF'
, ze` in the content: if the second line has
znakami ucieczki z komendami cd`, zwracam: " .sh: linia X: cd: polecenie nie znaleziono "; ale jeśli podwójnie zacytuję"EOF"
; wtedy zmienne bash${A}
nie są zachowywane jako ciągi znaków (są one rozwijane); ale potem zachowywane są podziały wierszy - i nie mam problemu z uruchomieniem poleceniacd
w drugim wierszu ( i zarówno „EOF”, jak i „EOF” wydają się dobrze grać zeval
, do uruchamiania zestawu poleceń przechowywanych w zmienna łańcuchowa ). Twoje zdrowie!