文字列をそのまま印刷できるように、すべての特殊文字をエスケープするにはどうすればよいですか?

文字列をそのまま印刷できるように、すべての特殊文字をエスケープするにはどうすればよいですか?

私は(静的言語を使用して)tcshスクリプトを動的に生成しています。いくつかのコマンドを含むセクションがあります<add-command-here>。私がしたい:

echo <add-command-here>

私は<add-command-here>ただ命令を入力しました。コマンドはそのまま印刷し、評価しないでください。たとえば、envが含まれている場合は、実際のパスの代わりに$PWD印刷したいと思います。$PWD私はそれを一重引用符で囲むことを考えました。

echo '<add-command-here>'

ただし、コマンドにすでに引用符がある場合は機能しません。ここそれは言う:

一重引用符の中に一重引用符を含めることはできません。

また、二重引用符はまだ計算されており、コマンドにすでに二重引用符が含まれていると同じ問題が発生するため、二重引用符を使用することはできません。

いくつかのテスト:

main.py --help
main.py -option1 $PWD
main.py -option1 '$PWD'
'main.py -option1 $PWD'
main.py -option1 "$PWD"
main.py -option1 "PWD 'hi'"
main.py -option1 "PWD \'hi\'"

私はこれらすべてをそのまま印刷したいと思います。つまり、入力があればX出力はX。すべての特殊文字をエスケープする必要があるようです。私はそれを直接実装します。 (単にブラックボックスだと思います。これを行う関数です。)私の質問は戦略に焦点を当てています。ここでこの問題を解決する正しい方法は何ですか?

ベストアンサー1

おすすめ記事