GNU/Linux >> Znalost Linux >  >> Linux

Jak uniknout citacím v Shellu?

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

Linux
  1. Kdy je nutné dvojité uvozování?

  2. Proč stránky Unix Man Pages používají dvojité zaškrtnutí místo dvojitých uvozovek?

  3. Jaká je dobrá mnemotechnická pomůcka pro Shell Double vs. Jednoduché uvozovky?

  1. Jak změnit Shell v Linuxu

  2. Jak při použití printf uniknout speciálním znakům ve skriptu shellu?

  3. Jak na to:Neomezená historie Bash/shell?

  1. Jak zkontrolovat, zda je Shell přihlašovací/interaktivní/dávkový?

  2. jak odstranit dvojité uvozovky v csv

  3. Jak uniknout! v hesle?