0

無限ループを開始する AWK スクリプトを作成しています。したがって、スクリプトでは、指定されたパスにファイルが存在することを検証します。そうであれば、無限ループを終了します。

while ( ("ls -l /tmp/STOP" |& getline var4) > 0) {
        exit 0
}
close("ls -l /tmp/STOP")

問題は、実行時にファイルが存在しないときに標準エラーが発生することです。

ls: /tmp/STOP: そのようなファイルまたはディレクトリはありません

コンソールに表示されるこの標準エラー メッセージを回避するにはどうすればよいでしょうか?

4

3 に答える 3

0
BEGIN {
  while ( system("sleep 1; test -f /tmp/STOP") ) print "The file is not there..."
  exit
}

sleep コマンドが用意されているのは、狂ったようにプロセスを生成したくないからです。

于 2012-12-11T09:58:57.663 に答える
0

lsディレクトリの一覧が特に必要ない場合は使用しないでください。からの終了コードのようなものtest -e /tmp/STOPがうまく機能します。

 if (! system ("test -e /tmp/STOP")) exit 0
于 2012-12-11T09:34:44.630 に答える
0

エラー ストリームを にリダイレクトしてみてください/dev/null:

while ( ("ls -l /tmp/STOP 2>/dev/null" |& getline var4) > 0) {
    exit 0
}
close("ls -l /tmp/STOP")
于 2012-12-11T09:39:14.753 に答える