Есть быдлокод юного линуксоида.
Незамысловатый чат-бот.
Время от времени выдаёт ошибку сегментирования.
Количество слов, на которые скрипт реагирует - сотни.
Как оптимизировать, уважаемые гуру?
#!/bin/bash
while [ 1 ]
do
INDEXURL="http://blabla.com/index.php"
TARGTURL="http://blabla.com/chat.php" # Линк на чат
USRAGENT="Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"
# USERNAME="Pupkin"
curl -e $INDEXURL -A "$USRAGENT" -L -b cookies.txt -c cookies.txt -o cha.html $TARGTURL &> /dev/null
oldmsg=$(grep 'javascript' cha.html | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed '/Pupkin:/d' | head -n1 | cut -d':' -f3 | cut -c 2-) # находим самое свежее msg чата, исключая своё.
echo "$(date '+%H:%M:%S') $oldmsg"
sleep 60
curl -e $INDEXURL -A "$USRAGENT" -L -b cookies.txt -c cookies.txt -o cha.html $TARGTURL &> /dev/null
newmsg=$(grep 'javascript' cha.html | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | sed '/Pupkin:/d' | head -n1 | cut -d':' -f3 | cut -c 2-) # ждём минуту, не скажет ли кто-нибудь что-нибудь
echo "$(date '+%H:%M:%S') $newmsg"
echo ""
if [[ "$oldmsg" != "$newmsg" ]] # если сказал, то
then
elif echo $newmsg | grep -i -s -q -E 'зд.ров|привет|драту|'^хай.'|хаюш'
then
pr2=("И Вам!" "Привет!" "Здрасьте!" "Приветики!")
rotv=${pr2[$RANDOM % ${#pr2[@]} ]} # рандомный ответ
elif echo $newmsg | grep -i -s -q -E 'адиос|бывай|встречи|свидания|скорого|досвидос|пока|увидимся|оставить|откланяться|вернусь'
then
bbl=("Пока!" "Увидимся!" "Берегите себя." "До свидания!" "Вы как хотите, а я остаюсь." "Гудбай!" "Пока, было приятно поболтать!")
rotv=$bbl[$RANDOM % ${#bbl[@]} ]} # рандомный ответ
############## ЕЩЁ НЕСКОЛЬКО СОТЕН 'elif - then' ##############
elif echo $newmsg | grep -i -s -q -E 'алло|алле|живой'
then
allo=("Я есть." "Да." "Я тут." "Я здесь.")
rotv=$allo[$RANDOM % ${#allo[@]} ]} # рандомный ответ
else rotv= ##### Молчу, т.к. не знаю, что сказать.
fi
echo "$(date '+%H:%M:%S') $rotv"
curl -e $INDEXURL -A "$USRAGENT" -L -b cookies.txt -c cookies.txt -F do=shout -F message="$rotv" -F s= $TARGTURL &> /dev/null # отправляем ответ
else : ##### Все молчат и я молчу.
fi
done