我有一个脚本,在作业完成时会生成一个.log文件。我不希望它继续前进,直到.log文件的数量等于.com文件的数量。当前,如果我执行此脚本,它将开始循环,然后立即跳过实际的循环并继续执行该脚本。
根据我从阅读中收集到的信息,没有理由该脚本不起作用。应该将其捕获在循环中,直到这两个值彼此相等。
$ direct是工作目录
COM="find $direct -maxdepth 1 -type f -name *.com"
log="find $direct -maxdepth 1 -type f -name *.log"
until [[ $($COM | wc -l) = $($log | wc -l) ]];
do
sleep 10
done
echo name EE E+ZPE E+U E+H G | cat > allRE
for i in R[R,S]*.out
do echo $i | cat > $i.energies &&
#cat temp.txt > $i.energies
#echo $i is finished
done
我得到的是它提交作业(被编码为未显示的脚本的一部分),启动循环(当我查看进程列表时,我可以看到sleep命令),然后尝试执行显示该脚本的一部分只是发现没有.out文件(一旦作业开始在我使用的超级计算机上运行,便会创建这些文件),然后继续执行该脚本。
有人要求我用-x运行它。我不知道我在寻找什么,所以这是涉及循环的部分:
++ COM='find /ddn/home6/r2536/G09Input/test2/low/com -maxdepth 1 -type f -name *.com'
++ log='find /ddn/home6/r2536/G09Input/test2/low/com -maxdepth 1 -type f -name *.log'
+++ find /ddn/home6/r2536/G09Input/test2/low/com -maxdepth 1 -type f -name RR1.com RR2.com RR3.com RR4.com RR5.com RR6.com SS1.com SS2.com SS3.com SS4.com SS5.com SS6.com
+++ wc -l
find: paths must precede expression: RR2.com
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
+++ find /ddn/home6/r2536/G09Input/test2/low/com -maxdepth 1 -type f -name '*.log'
+++ wc -l
++ [[ 0 = 0 ]] #if this is saying that there are no .com files, I don't get it, because the script just made and submitted 12 .com files.
++ echo name EE E+ZPE E+U E+H G
++ cat
++ for i in 'R[R,S]*.out'
++ echo 'R[R,S]*.out'
++ cat
++ grep 'SCF D' 'R[R,S]*.out'
++ tail -1
grep: R[R,S]*.out: No such file or directory