GNU/Linux >> Linux の 問題 >  >> Linux

シェルで引用をエスケープする方法は?

bashで文字をエスケープするのに問題があります。別のユーザーでコマンドを実行しているときに、一重引用符と二重引用符をエスケープしたいと思います。この質問のために、画面に次のようにエコーしたいとします。

'single quote phrase' "double quote phrase"

別のユーザーに切り替える必要がある場合、すべての特殊文字をエスケープするにはどうすればよいですか:

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

もちろん、これは正しい結果を生み出しません。

承認された回答:

次の文字列リテラル構文を使用できます:

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

man bashから

$’string’の形式の単語は特別に扱われます。単語は
文字列に展開され、
ANSI C標準で指定されているように、バックスラッシュでエスケープされた文字が置き換えられます。
バックスラッシュエスケープシーケンスが存在する場合は、次のようにデコードされます。

          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. 二重引用符はいつ必要ですか?

  2. Unixのマニュアルページで二重引用符の代わりに二重引用符を使用するのはなぜですか?

  3. Linuxでシェルを変更する方法

  1. シェルがログイン/インタラクティブ/バッチであるかどうかを確認する方法は?

  2. シェルダブル対の良いニーモニックは何ですか。一重引用符?

  3. csv の二重引用符を削除する方法

  1. printfを使用しているときに、シェルスクリプトで特殊文字をエスケープする方法は?

  2. 方法:無制限の Bash/シェル履歴?

  3. 逃げる方法!パスワードで?