Значение в $ VAR_A
имеет завершающий \ r
(возврат каретки) в конце, что приводит к сбою сравнения строк. У него будет возврат каретки, поскольку это заголовок HTTP, и конец строки маркер в заголовках HTTP указан в RFC2616 как \ r \ n
.
Один из способов исправить это:
VAR_A=$(curl -Is --head "$URL_CURL_CHECK" | grep "HTTP/1.1 200 OK" | tr -d '\r')
tr -d '\ r'
удалит все символы возврата каретки.
Другой вариант - заставить grep
возвращать только совпавший текст (который будет в точности строкой HTTP / 1.1 200 OK
):
VAR_A=$(curl -Is --head "$URL_CURL_CHECK" | grep -o "HTTP/1.1 200 OK")
В любом случае вы можете захотеть использовать -F
с grep
здесь, поскольку строка является фиксированной строкой, а не регулярным выражением:
VAR_A=$(curl -Is --head "$URL_CURL_CHECK" | grep -F -o "HTTP/1.1 200 OK")
Ваш сценарий также использует else
с условием. Либо используйте только else
, либо используйте elif
с условием. В этом случае просто удалите условие.
Другой вариант - удалить задания непосредственно из AT
каталога спула, где хранятся задания (эта команда удаляет задания только пользователя YOURUSER
):
find /var/spool/atjobs -user YOUR_USER -type f -exec rm {} \;