फ़ंक्शन में एक कमांड को फिर से प्राप्त करना चाहता था। परीक्षण के लिए मैंने गलत कमांड ( 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