使嵌套的 awk 容错

Making nested awk fault tolerant

我有这个命令(for 循环的一部分)试图以秒为单位获取进程的开始时间并将其存储到变量中供以后使用。该命令解析 /proc/<pid>/stat。在此命令的上下文中,进程可能是短暂的,因此当我实际 运行 此命令时,该目录可能已不存在。这会导致嵌套的 awk 失败并导致外部除法命令出现语法错误。我该如何防止这种情况?

starttime=$(($(awk '{print }' $d/stat) / systick));

$d/proc/<pid>

我会这样做:

starttime=$(($(awk '{print }' $d/stat 2>/dev/null || echo 0) / systick));

基本上,如果 awk 由于某种原因失败,例如特殊的 PID 统计文件不再存在,那么它 returns 0 到该部门。

通过这种方式,您几乎不需要更改代码。

PS:我假设 systick 总是不是 0 的其他值。