Я пишу bash скрипт, который автоматизирует использование других python тестов (imagedeploy, hydrorationwiring). Сценарий bash просматривает список имен устройств в формате .txt, затем перемещается по списку и выполняет 2 действия (развертывание изображения, подключение к гидратации) для каждого имени в .txt.
Что происходит, так это то, что тест гидратации будет возвращать ненулевое возвращаемое значение в конце, что ломает l oop и завершает скрипт.
Я хочу, чтобы скрипт продолжал идти вниз список p, независимо от ненулевых возвратов, до тех пор, пока не будет затронуто каждое устройство в списке p.
Мой вопрос: как я могу продолжить, пока l oop продолжится независимо от ненулевых возвратов.
#!/bin/bash
if [ -z "$1" ]
then
echo "Usage: "devices.txt""
exit 1
fi
FILENAME=$1
RESULTFILE="/home/user/ssim-results/RduLabTestResults"
date >> $RESULTFILE
while read p; do
echo "TESTING $p:"
LOGFILE="/home/user/ssim-results/RduLabTestLog_${p}.log"
SUMMARYFILE="/home/user/ssim-results/RduLabTestLog_${p}.summary"
#echo "STEP1: imagedeploy -d $p --latest-release4"
echo "STEP1: imagedeploy -d $p --latest-release4"
#imagedeploy -d $p --latest-release4
if [ $? -eq 0 ] #imagedeploy pass/failure condition
then
echo "STEP2: LLDP check"
#runtests.sh -l INFO --vx-img -i /home/frogs/vmlocker/cloud/vx/latest-vx-rel $TESTS_HOME/tests/platform/HydrationWiring.py -d $p -T $LOGFILE -r $SUMMARYFILE
runtests.sh -l INFO --vx-img -i $VXREL3 $TESTS_HOME/tests/platform/HydrationWiring.py -d $p -T $LOGFILE -r $SUMMARYFILE
echo "STEP3: checking result"
if grep --quiet success $SUMMARYFILE
then
echo "$p PASS" >> $RESULTFILE
else
echo "$p FAIL" >> $RESULTFILE
fi
else
echo "imagedeploy failed"
fi
done <$FILENAME
ImageDeploy закомментирован, потому что imagedeploy работает как задумано. Проблема в "шаге 2". Тестирование. sh Гидравлическая проводка
Вывод:
FAILED (errors=1)
STEP3: checking result
Тестировалось только первое устройство в моем списке, потому что оно вышло из строя, я хотел бы, чтобы вывод был примерно таким:
FAILED (errors=1)
STEP3: checking result
next device...
PASS
STEP3: checking result
next device...
FAILED (error=1)
STEP3: checking result
next device...
Passed
STEP3: checking result
et c