Удалить все задания `at` при загрузке

Значение в $ 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 с условием. В этом случае просто удалите условие.

1
14.01.2016, 12:25
1 ответ

Другой вариант - удалить задания непосредственно из AT каталога спула, где хранятся задания (эта команда удаляет задания только пользователя YOURUSER):

find /var/spool/atjobs -user YOUR_USER -type f -exec rm {} \;
2
27.01.2020, 23:36

Теги

Похожие вопросы