TCLスクリプトの形式で出力を生成するユーティリティ(たまたまPythonにあります)を書いています。Pythonで任意の文字列変数(Unicodeではない)を指定すると、次のようなTCL行を生成したい
set s something
... これにより、TCL 変数 ' s
' がその文字列に正確に設定されます。奇妙になりすぎないように、出力を必要以上に乱雑にしたくありません。まともなアプローチは
文字列が空ではなく、英数字のみを含み、いくつかの文字が含まれている場合
.-_
(しかし絶対$"{}\
にそうではない)、そのまま使用できます。印刷可能な文字のみが含まれ、二重引用符や中括弧が含まれていない (およびバックスラッシュで終わっていない) 場合は、単純に囲みます
{}
。それ以外の場合は、 のエスケープと非印刷文字のエスケープを
""
使用した後に前後に置きます。\
"
{
}
\
$
[
]
\nnn
質問: 二重引用符内でエスケープする必要がある文字の完全なセットですか? ドキュメントでこれを見つけることができません。そして、私は何かを見逃しましたか(たとえば、(2)の文字列が \ で終わることはできないことをほとんど見逃していました)。
で引用できる文字列が他にもたくさんあることは知っていますが {}
、それらを簡単に識別するのは難しいようです。また、非印刷文字 (特に改行) は、TCL 出力に文字通り存在することを気にしないのであれば、(2) で問題ないようです。