所以我有一个直到循环,然后我一旦满足直到循环的条件,我希望循环停止并继续沿命令行向下。我使用 PBS 提交了一些作业(也写入脚本)。.com 文件是输入,.log 是输出。目前,调用每个文件的数量彼此相等并因此结束循环似乎存在问题。
$direct 设置为工作目录
我从几个观察中知道这一点:
1)我在超级计算机上查看时睡眠过程仍在运行
2)当我检查队列时,所有作业都已完成
3)在脚本的后面,我要求它发送一封电子邮件,但这并没有发生
这是我第一次使用 until 循环和 sleep 命令,所以我想知道我的语法是否有问题。如果我无法解决这个直到循环,理论上我可以用 if/then 循环做同样的事情,但从我所看到的情况来看,直到循环应该更有效。
这是我正在编写的导致我出现问题的代码的一小部分。完成生成 .log 文件的作业可能需要一个多小时,所以我不需要很短的睡眠时间。
COM=$(find $direct -maxdepth 1 -type f -name "*.com" -printf x | wc -c)
log=$(find $direct -maxdepth 1 -type f -name "*.log" -printf x | wc -c)
until [[ $COM = $log ]];
do
sleep 10 #wait 10 seconds between checking values
done
pattern="*.out"
files=( $pattern )
grep "Isotropic" "${files[0]}" |tr -s ' ' | cut -d " " -f2 > 001.anmr
grep "Isotropic" "${files[0]}" |tr -s ' ' | cut -d " " -f3 > 000.anmr