Пока цикл не работает, скрипт продолжается

У меня есть скрипт, который генерирует файл.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 

Что я получаю, так это то, что он отправляет задания (которые закодированы в части скрипта, которая не показана), запускает цикл (я вижу команду сна, когда смотрю на список процессов), затем пытается выполнить показанную часть сценарий только для того, чтобы обнаружить, что нет файлов.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

0 ответов

Другие вопросы по тегам