停止标准错误的系统错误

时间:2012-12-11 09:16:25

标签: shell unix awk

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

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

问题是我在运行时没有文件时出现标准错误:

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

我们如何在控制台上避免此标准错误消息?

3 个答案:

答案 0 :(得分:0)

如果您不特别想要目录列表,请不要使用ls。类似test -e /tmp/STOP的退出代码会更好。

 if (! system ("test -e /tmp/STOP")) exit 0

答案 1 :(得分:0)

尝试将错误流重定向到/dev/null

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

答案 2 :(得分:0)

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

睡眠命令就在那里,因为你不想像疯了一样产生进程。