文字コードを含む文字列を引用符形式に変換する方法

文字コードを含む文字列を引用符形式に変換する方法

同様の文字列がありますNew\x20Folder。特殊文字は対応するコードで表示されます。文字列を引用形式に変換したいと思います"New Folder"

利用可能な唯一のツールは、bashやsedなどの標準ユーティリティです。

最初のフォームはudev環境変数によって生成されますID_FS_LABEL_ENC。 autofs 構成ファイルは必須形式を使用します。引用符付き文字列が必要です。

答え1

バックスラッシュ自体も文字列(おそらく)からエスケープされて\x5cいると仮定すると、udevprintf組み込み:

printf -v translated '"%b"' "$ID_FS_LABEL_ENC"

例の文字列を試してみると、次のようになります。

$ ID_FS_LABEL_ENC='New\x20Folder'
$ printf -v translated '"%b"' "$ID_FS_LABEL_ENC"
$ echo "Translated to: '$translated'"
Translated to: '"New Folder"'

ご希望の変更をお受けいたします。

printf -vバックスラッシュエスケープシーケンスを実行するBash拡張形式で、標準スタイルの翻訳結果をprintf変数に割り当てます。%bこれは名前には奇妙ですが、正当な文字を含む興味深いビジネスの影響を受けず、文字列の書き換えは不要です。

答え2

この試み:

string=$'New\x20Folder'

または

string="New\x20Folder"
string="$(echo -e "$string")"

関連情報