Mám potíže s únikem znaků v bash. Při spouštění příkazu pod jiným uživatelem bych chtěl uniknout jednoduchým a dvojitým uvozovkám. Pro účely této otázky řekněme, že chci na obrazovce zobrazit následující:
'single quote phrase' "double quote phrase"
Jak mohu uniknout všem speciálním znakům, pokud také potřebuji přepnout na jiného uživatele:
sudo su USER -c "echo "'single quote phrase' "double quote phrase"""
To samozřejmě nevede ke správnému výsledku.
Přijatá odpověď:
Můžete použít následující syntaxi řetězcového literálu:
> echo $''single quote phrase' "double quote phrase"'
'single quote phrase' "double quote phrase"
Z man bash
Se slovy ve tvaru $‘string‘ se zachází speciálně. Slovo se rozšíří
na řetězec, přičemž znaky se zpětným lomítkem jsou nahrazeny podle
standardu
ANSI C. Sekvence escape zpětného lomítka, jsou-li přítomny, se dekódují 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) cx a control-x character
Jak dosáhnout přenositelnosti pomocí Sed -i (úpravy na místě)?
Existuje někdy dobrý důvod, proč spustit Sudo Su?