У меня есть следующий код, который предназначен для проведения моделирования. Как только симуляция будет завершена, он удалит текст из выходного файла и использует новый отредактированный выходной файл в качестве входных данных для новой симуляции. Что происходит, я зацикливаюсь на существовании файла GROPATH. Я получаю следующую петлю, напечатанную в файле журнала:
Directory path exists
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
waiting sleep 10800
GROPATH does not exist
...
так продолжается постоянно.
Я запутался, поскольку GROPATH существует, я могу видеть точный файл в каталоге. Что я делаю не так, что вызывает этот бесконечный цикл? Должен ли я использовать цикл if вместо этого? Я проверил свое отображение пути к файлу, и оно мне кажется правильным.
#!/bin/bash
#set value of i
i=`k=$(ls md*gro -v1 | tail -n1) ; echo ${k//.gro/} | sed "s/md//"`
# while more than 20 waters ...
while (grep -c SOL md$i.gro > 20); do
DIRECTORY=~/scratch/desolvation/iteration_$i
GROPATH=~/scratch/desolvation/iteration_$i/md$i.gro
ERRORPATH=~/scratch/desolvation/log_gpu.dat
#does the directory exist?
if [ -d "$DIRECTORY" ]; then
echo "Directory path exists"
# does gro file exist?
while [ ! -d "$GROPATH" ]; do
echo "GROPATH does not exist"
if grep -q 'error' "$ERRORPATH"; then
echo "error in gromacs"; exit
else echo "waiting" sleep 10800
fi
done
Я ожидаю, что код, который распознает файл, существует и перейдет к следующей части программы (которую я не включил, чтобы сохранить краткость), которая редактирует файл GROPATH, чтобы его можно было использовать в качестве входных данных для следующего моделирования .