我正在编写一个启动无限循环的 AWK 脚本 - 因此在脚本中我验证指定路径中是否存在文件,如果这样我将退出无限循环:
while ( ("ls -l /tmp/STOP" |& getline var4) > 0) {
exit 0
}
close("ls -l /tmp/STOP")
问题是当文件不存在时,我在运行时收到标准错误:
ls: /tmp/STOP: 没有这样的文件或目录
我们如何避免控制台上出现这种标准错误消息?
ls
如果您不是特别想要目录列表,请不要使用。像退出代码这样的东西test -e /tmp/STOP
会更好。
if (! system ("test -e /tmp/STOP")) exit 0
尝试将错误流重定向到/dev/null
:
while ( ("ls -l /tmp/STOP 2>/dev/null" |& getline var4) > 0) {
exit 0
}
close("ls -l /tmp/STOP")
BEGIN {
while ( system("sleep 1; test -f /tmp/STOP") ) print "The file is not there..."
exit
}
有 sleep 命令是因为你不想疯狂地产生进程。