Můžete buď:
- Každému jednotlivému speciálnímu symbolu dejte zpětné lomítko (jako
\[abc\]_\[x\|y\]
) nebo - Celý argument uveďte do dvojitých uvozovek (jako v
"[abc]_[x|y]"
).
UPRAVIT: Jak někteří zdůraznili, dvojité uvozovky nebrání expanzi proměnné ani substituci příkazů. Pokud tedy váš regulární výraz obsahuje něco, co může bash interpretovat jako jedno z toho, použijte místo toho jednoduché uvozovky.
Používejte jednoduché uvozovky. Jednoduché uvozovky zajišťují, že žádný ze znaků nebude interpretován.
$ printf %s 'spaces are not interpreted away
neither are new lines
nor variable names $TESTING
nor square brackets [TESTING]
nor pipe characters or redirection symbols | > <
nor the semicolon ;
nor backslashes \a \b \c \\
the only thing that does not work is the single quote itself
'
Pokud potřebujete vložit jednu nabídku, existují dvě řešení:
$ printf '%s\n' '[ Don'"'"'t worry, be happy! ]'
[ Don't worry, be happy! ]
$ printf '%s\n' '[ Don'\''t worry, be happy! ]'
[ Don't worry, be happy! ]
Za man bash
Existují tři mechanismy citování:únikový znak , jednoduché a dvojité uvozovky.
Zpětné lomítko bez uvozovek (\ ) jeúnikový znak . Zachová doslovnou hodnotu dalšího znaku, který následuje, s výjimkou
. Pokud \ Objeví se pár a zpětné lomítko není samo o sobě uvozováno, \ je považováno za pokračování řádku (to znamená, že je odstraněno ze vstupního proudu a efektivně ignorováno). Uzavření znaků do jednoduchých uvozovek zachová doslovnou hodnotu každého znaku v uvozovkách. Jednoduchá uvozovka se nesmí vyskytovat mezi jednotlivými uvozovkami, i když jim předchází zpětné lomítko.
Uzavření znaků do dvojitých uvozovek zachová doslovnou hodnotu všech znaků v uvozovkách, s výjimkou $ , ` , \ , a pokud je povoleno rozšíření historie, ! . Znaky $ a ` zachovat jejich zvláštní význam v uvozovkách. Zpětné lomítko si zachová svůj zvláštní význam pouze tehdy, když za ním následuje jeden z následujících znaků:$ , ` , " ,\ , nebo
. Dvojitá uvozovka může být uvedena v uvozovkách tak, že před ní bude zpětné lomítko. Je-li povoleno, rozbalení historie se provede, pokud ! objevující se dvojité uvozovky se escapují pomocí zpětného lomítka. Zpětné lomítko před ! není odstraněn. Speciální parametry * a @ mají zvláštní význam v uvozovkách (viz PARAMETERS níže).
Slova ve tvaru $' řetězec ' se ošetřují speciálně. Slovo expanduje na řetězec , přičemž znaky bez zpětného lomítka jsou nahrazeny podle specifikace standardu ANSI C. Zpětné lomítko escape sekvence, pokud existují, jsou dekódovány následovně:
\a alert (bell) \b backspace \e \E an escape character \f form feed \n new line \r carriage return \t horizontal tab \v vertical tab \\ backslash \' single quote \" double quote \nnn the eight-bit character whose value is the octal value nnn (one to three digits) \xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) \uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits) \UHHHHHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits) \cx a control-x characterRozšířený výsledek je v jednoduchých uvozovkách, jako by znak dolaru nebyl přítomen.
Řetězec v uvozovkách, kterému předchází znak adolar ($" řetězec " ) způsobí překlad řetězce podle aktuálního národního prostředí. Pokud je aktuální národní prostředí C nebo POSIX , znak dolaru je ignorován. Pokud je řetězec přeložen a nahrazen, je nahrazení dvojitými uvozovkami.