bash - 检查计算状态的脚本
问题描述
我试图解决以下问题,但由于我对 Bash 的了解有限,我寻求帮助。我有一组带有 inp 扩展名的文件(例如 name1.inp、name2.inp 等)。这些位于某个文件夹中并提交到队列中。在某些时候,计算开始并产生输出文件(例如 name1.log、name2.log 等)。计算完成后,输出文件包含最后一个类似字符串“正常终止”。我想编写一个脚本来检查此类计算的状态,即在计算开始、正在进行或完成时打印出信息。我知道如何检查完成的计算(tail 命令),但不确定如何遍历文件夹中的所有 inp 文件以检查它们是否是日志文件,如果这些文件存在只是为了检查“正常终止”字符串是否存在或不是。
非常感谢解决这个简单的问题。
解决方案
多亏了许多有用的评论,脚本如下所示,并且运行良好。非常感谢评论前一篇文章的人。
for inp in *.inp; do
inpfile="${inp##*/}"
inpname="${inpfile%.inp}"
outfile="${inpname}.log"
if test -f "$outfile"; then
# echo "$outfile exists."
if grep -q 'Normal termination' $outfile; then
echo ">> $outfile FINISHED."
else
echo "-- $outfile IN PROGRESS."
fi
else
#echo "$outfile does not exist."
echo "XX $outfile NOT STARTED."
fi
done
推荐阅读
- java - spring boot 自定义外部配置加载顺序
- maven - 如何防止 Maven 检查远程存储库中的某些工件?
- python - 如何在 python 中以 utf-8 格式写入文件名?
- c++ - 如何使用 Windows 身份验证正确连接到 SQL 服务器?
- arrays - 有效地将相同的输入映射到多个函数
- python - 将 ols 回归结果存储为字典/数据框或列表
- python - 为什么我在 Python 中收到此错误?类型错误:'在
' 需要字符串作为左操作数,而不是元组 - java - Docker 使用哪个 OpenJDK 发行版?
- android - 在哪里存储 API 访问令牌?
- java - 尝试使用 TYPES.NULL 设置 null 时获取未知对象类型