Discussion:
Przekierowanie inline - jak zabronić rozwijania zmiennych
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
heby
2023-05-23 20:04:37 UTC
Permalink
Cześć.

Taki bash:

[...]
some_command <<END
some stuff $here
END
[...]

Teraz, bash za wszelką cenę stara się rozwinąc $here do dereferencji
zmiennej, a ja chce dokłądnie ten *napis* a nie rozwijać zmienną.

W zasadzie chce to w całej sekcji, aby przeszła bez zmian na input
some_command. I tylko ta sekcja. Mam inną, gdzie chce rozwijać zmienne.

Jest jakaś zakresowa możliwośc wyłączenia rozwijania w tej sytuacji?
Konto58
2023-05-23 21:29:03 UTC
Permalink
Tue, 23 May 2023 22:04:37 +0200
Post by heby
Cześć.
[...]
some_command <<END
some stuff $here
END
[...]
Teraz, bash za wszelką cenę stara się rozwinąc $here do dereferencji
zmiennej, a ja chce dokłądnie ten *napis* a nie rozwijać zmienną.
W zasadzie chce to w całej sekcji, aby przeszła bez zmian na input
some_command. I tylko ta sekcja. Mam inną, gdzie chce rozwijać zmienne.
Jest jakaś zakresowa możliwośc wyłączenia rozwijania w tej sytuacji?
Np. eskejpować znak specjalny?
\$here
heby
2023-05-23 21:52:04 UTC
Permalink
Post by Konto58
Np. eskejpować znak specjalny?
\$here
Nie ;)

Znalazłem rozwiązanie.

some_command <<'END'
some stuff $here
END

Dodanie '' lub "" zabrania rozwijania zmiennych.

https://tldp.org/LDP/abs/html/here-docs.html

Example 19-7. Parameter substitution turned off
Arnold Ziffel
2023-05-24 09:34:44 UTC
Permalink
Post by heby
Znalazłem rozwiązanie.
some_command <<'END'
Dobrze że napisałeś o rozwiązaniu :) Często ludzie tylko pytają, a jak
rozwiążą problem, to się nie podzielą. A tak to dowiedziałem się czegoś
nowego. Dzięki.
--
Po wybuchu jądrowym na uschniętym kikucie ocalałego drzewa siedzą
dwa szympansy.
- Masz cos do jedzenia? - pyta samiec.
Samica podaje mu jabłko.
- O nie, - protestuje samiec - nie będziemy tej idiotycznej historii
powtarzać od początku!
Loading...