在bash脚本中,调用bwait等待一系列任务完成后,bjobs命令用于检查任务状态。但是,有时候即使bwait返回,bjobs的状态仍然是未完成的,而不是DONE状态。这可能会造成混淆和错误,因此需要解决。
一种可能的解决方案是在bjobs命令中使用'-noheader'选项,以删除命令输出中的首行。此外,通过使用awk和grep等其他Shell命令,可以提取有关任务的有用信息,例如任务ID和状态,以确保任务已成功完成。
以下是示例代码:
JOB_IDS=$(bwait -w "ended(jobA) && ended(jobB)")
# wait for task completion
while true; do
sleep 1
JOB_STATUS=$(bjobs $JOB_IDS -noheader | awk '{print $3}')
if [[ "$JOB_STATUS" == "DONE" ]]; then
break
fi
done
echo "All tasks completed successfully!"
在上述代码中,bwait等待两个作业(jobA和jobB)完成。然后,一个无限循环等待bjobs命令返回完成状态。在每次迭代中,检查每个作业的状态,如果所有作业都处于完成状态,则退出循环并打印成功消息。
上一篇:BWA: 检测短读序列中的变异
下一篇:bwapp IDOR(更改密钥)