6 error-handling awk gawk race-condition
有没有办法让awk(gawk)忽略或跳过丢失的文件?也就是说,在命令行上传递的文件不再存在于文件系统中(例如,在/ proc/[1-9]*下快速出现/消失文件).
默认情况下,丢失的文件是致命错误:-(
我希望能够做到这样的事情:
BEGIN { MISSING_FILES_ARE_FATAL = 0 } # <- Wishful thinking!
{ count++ }
END { print count }
Run Code Online (Sandbox Code Playgroud)
包装器脚本无法检查awk运行时是否存在文件,因为它们在检查和awk之间可能会消失,然后尝试打开它们,即它是竞争条件.(这也是在awk中检查然后打开的竞争条件,虽然时间更紧)
按照最好的传统,我将用 Perl 程序回答您的 awk 问题。
#!/usr/bin/perl -w
for my $file (@ARGV) {
open my $fh, $file or next;
while(<$fh>) {
...do your thing here...
}
}
Run Code Online (Sandbox Code Playgroud)
(它不是 awk,但它是唯一没有竞争条件的解决方案。)
| 归档时间: |
|
| 查看次数: |
3031 次 |
| 最近记录: |