1

次の行を C ベースのシステムから Unix コマンド ラインにエスケープして、この正確な行が Unix で使用されるようにするにはどうすればよいでしょうか。

tr "\304\305\326" "\134\135\136" </stx/users/n/tmp/tmpfile1.tmp>/stx/users/n/tmp/tmpfile2.tmp

最も明白なのは次のとおりです。

build("|tr \"\\304\\305\\326\" \"\\134\\135\\136\", "<", tmp1, ">", tmp2")

しかし、実行すると、Unix でファイルが見つからないというエラーが発生します。余分な\"を取り除くとOKなファイルに書き込めるのですが、問題は文字列の置換がうまくいかないことです。上記の行で、文字の置換はOKです。

8 進文字にアポストロフィを使用することはできません。これは、システムがそれらを実際の文字として渡すためです。\326の代わりにÖ

関数「ビルド」は、使用中の C ベース システムの関数です。基本的に文字列ビルダー。パイプは、Unix でコマンドを実行するために使用されます。

4

1 に答える 1

0

ビルド関数が実際に何をすべきかはわかりませんが、空白文字もエスケープする必要があることを覚えておいてください。

于 2012-09-28T15:45:28.953 に答える