0

我正在编写一个启动无限循环的 AWK 脚本 - 因此在脚本中我验证指定路径中是​​否存在文件,如果这样我将退出无限循环:

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

问题是当文件不存在时,我在运行时收到标准错误:

ls: /tmp/STOP: 没有这样的文件或目录

我们如何避免控制台上出现这种标准错误消息?

4

3 回答 3

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 回答
0
BEGIN {
  while ( system("sleep 1; test -f /tmp/STOP") ) print "The file is not there..."
  exit
}

有 sleep 命令是因为你不想疯狂地产生进程。

于 2012-12-11T09:58:57.663 回答