Portál AbcLinuxu, 9. června 2025 07:06


Dotaz: Jak dostat v bashi do echa vykricnik?

11.10.2010 21:57 Pavel
Jak dostat v bashi do echa vykricnik?
Přečteno: 409×
Odpovědět | Admin
Zdravim, kdyz z konzole zavolam:
# echo "neco!"
tak my to hodi chybu:
bash: !": event not found
Ja ale potrebuju jeden vyraz s vykricnikem zapsat do souboru, tak jsem jen chtěl nasměrovat echo do souboru, ale ted nevim jak toho dosáhnout. Díky za rady!

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.10.2010 22:02 miro
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
Odpovědět | | Sbalit | Link | Blokovat | Admin
# echo 'neco!'
11.10.2010 22:02 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo neco\!
echo "neco\!"
echo 'neco!'
Dvojité uvozovky v shellu neuvozují vše, některé znaky uvnitř mají pořád svou platnost a musíte je uvodit zpětným lomítkem. A nebo použít jednoduché uvozovky, ty uvozují skoro vše. Pokud uvnitř textu nechcete nic uvozovat ani nahrazovat, používal bych spíš jednoduché uvozovky, nevím, proč ostatní většinou i pro tyto případy používají dvojité…
11.10.2010 22:10 Ladislav Hagara | skóre: 105 | blog: Ride the Raven
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
$ echo "neco\!"
neco\!
11.10.2010 22:20 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
No jo, byl jsem líný spustit bash a zkoušel jsem to v zsh. Pro bash by mělo platit tohle (z man bash):
Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $, `, \, and, when history expansion is enabled, !. The characters $ and ` retain their special meaning within double quotes. The backslash retains its special meaning only when followed by one of the following characters: $, `, ", \, or <newline>. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed.
11.10.2010 22:23 Jiri | skóre: 3
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
To je samozrejme blbe. Viz man bash.
11.10.2010 22:10 Pavel
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
Ten druhý váraz ale vypíše:
neco\!
12.10.2010 12:34 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
Nevím jak ostatní, ale já mám tyto záminky:
  1. zvyk z C (není relevantní)
  2. lépe to vypadá, " vypadá jako uvozovky víc než apostrof (subjektivní)
  3. až budu chtít doplnit proměnnou, musel bych vždy kontrolovat a případně i měnit druh použitých uvozovek okolo (fakt)
  4. jednotnost ve skriptu (výskyt proměnné v řetězci pro mne není tak důležitý že bych kvůli tomu používal dva druhy uvození, takže používám jen ten obecnější)
  5. četnost (v řetězcích skoro vždy něco expanduji, takže to malé množství případů kdy ne neřeším jako výjimku)
  6. trenink (udržuje to povědomí o tom, co se vlastně v shellu expanduje a co ne, což se často hodí)
  7. téměř nepoužívám perl tak nejsem ovlivněn
  8. v PHP to dělám stejně jako v Bash čímž se zvyk umocňuje
  9. v sed používám častěji klasické regexp než perlovské, dtto
Vykřičník je asi jediný případ kdy se uchýlím k apostrofům, pokud tedy není na konci a já nenapíšu takovéto "neco"\!
12.10.2010 12:46 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
Já právě v PHP i shellu pro čisté texty používám jednoduché uvozovky – jednak se mi nemůže stát, že by se něco expandovalo omylem, jednak by to mělo být rychlejší.
12.10.2010 13:46 sivlk | skóre: 15 | blog: sivlk
Rozbalit Rozbalit vše Re: Jak dostat v bashi do echa vykricnik?
Ale jednoduche uvodzovky su bezpecnejsie

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.