GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie entkomme ich Zitaten in der Shell?

Ich habe Probleme mit dem Escaping von Zeichen in Bash. Ich möchte einfache und doppelte Anführungszeichen maskieren, während ich einen Befehl unter einem anderen Benutzer ausführe. Nehmen wir für die Zwecke dieser Frage an, ich möchte Folgendes auf dem Bildschirm ausgeben:

'single quote phrase' "double quote phrase"

Wie kann ich alle Sonderzeichen entkommen, wenn ich auch zu einem anderen Benutzer wechseln muss:

sudo su USER -c "echo "'single quote phrase' "double quote phrase"""

Das führt natürlich nicht zum richtigen Ergebnis.

Akzeptierte Antwort:

Sie können die folgende String-Literal-Syntax verwenden:

> echo $''single quote phrase' "double quote phrase"'
'single quote phrase' "double quote phrase"

Von man bash

Wörter der Form $’string’ werden besonders behandelt. Das Wort wird
zu einem String erweitert, wobei Backslash-Escape-Zeichen wie im
ANSI-C-Standard
angegeben ersetzt werden. Backslash-Escape-Sequenzen, falls vorhanden, werden wie folgt dekodiert:

          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. Wann sind doppelte Anführungszeichen erforderlich?

  2. Warum verwenden Unix-Manpages doppelte Backticks anstelle von doppelten Anführungszeichen?

  3. Wie überprüfe ich, ob eine Shell angemeldet/interaktiv/Batch ist?

  4. So ändern Sie die Shell unter Linux

  5. Gewusst wie:Unbegrenzter Bash/Shell-Verlauf?

So installieren Sie Linux Bash Shell unter Windows 10

So ändern Sie eine Benutzer-Shell in Linux

So installieren und verwenden Sie Nu Shell unter Linux

Unterschied zwischen einfachen und doppelten Anführungszeichen in Bash Shell

Wie verwende ich if-else in Shell-Skripten?

Wie führe ich einen Befehl in einem Shell-Skript aus?