Lua で「os.execute」を実行すると、コンソールがすぐにポップアップし、コマンドが実行されてから閉じます。しかし、標準の Lua ライブラリのみを使用してコンソール出力を取り戻す方法はありますか?
46873 次
3 に答える
71
io.popen がある場合、これを使用します。
関数 os.capture(cmd, raw) ローカル f = アサート (io.popen(cmd, 'r')) ローカル s = assert(f:read('*a')) f:閉じる() raw の場合は end を返します s = string.gsub(s, '^%s+', '') s = string.gsub(s, '%s+$', '') s = string.gsub(s, '[\n\r]+', ' ') 戻り値 終わり
io.popen がない場合は、システムで popen(3) を使用できない可能性があり、深いヨーグルトを食べていることになります。ただし、すべての unix/mac/windows Lua ポートには io.popen があります。
(gsub
ビジネスは、先頭と末尾のスペースを取り除き、改行をスペースに変換します。これは、シェルがその$(...)
構文で行うこととほぼ同じです。)
于 2008-11-28T21:19:22.327 に答える
28
このhttp://pgl.yoyo.org/luai/i/io.popen io.popenが必要だと思います。しかし、常にコンパイルされるとは限りません。
于 2008-09-27T08:56:01.633 に答える
1
Luaについて具体的にはわかりませんが、通常は次のようにコマンドを実行できます。
comd >comd.txt 2>&1
出力とエラーをファイルcomd.txtにキャプチャし、言語ファイルI/O関数を使用してそれを読み込みます。
言語自体が標準出力とエラーをキャプチャするために提供していなかった場合、それは私がそれを行う方法です。
于 2008-09-25T10:11:05.397 に答える