Хотел повторить команду в функции. Для тестирования я написал неправильную команду (lsss
).
Он должен попытаться 5 раз и потерпеть неудачу, но он застрял в бесконечном цикле.
#!/bin/bash
RETRY () {
Attempt=0
Max_Attempts=5
CMD=$1
while [ $Attempt -lt $Max_Attempts ]
do
$CMD
if [ $? -eq 0 ]; then
echo "succeeded on Attempt $Attempt" >> /tmp/err.txt
break
else
Attempt=$( expr $Attempt + 1 )
echo "Command failed. Attempting $Attempt/$Max_Attempts" >> /tmp/err.txt
sleep 2
fi
done
}
LIST () {
lsss # COMMAND WRITTEN WRONGLY FOR TESTING
if [ $? -eq 0 ]; then
echo "SUCCESS"
else
RETRY LIST
echo "FAILED"
fi
}
LIST