Проверка, находится ли строка в ответе команды
Я борюсь с проблемой в Linux Bash.
Я хочу, чтобы скрипт выполнял команду
curl -s --head http://myurl/ | head -n 1
и если результат команды содержит 200, он выполняет другую команду. Иначе это что-то повторяет. Что у меня сейчас:
CURLCHECK=curl -s --head http://myurl | head -n 1
if [[ $($CURLCHECK) =~ "200" ]]
then
echo "good"
else
echo "bad"
fi
Скрипт печатает:
HTTP/1.1 200 OK
bad
Я пробовал много способов, но ни один из них, кажется, не работает. Кто-нибудь может мне помочь?
4 ответа
Решение
Я бы сделал что-то вроде этого:
if curl -s --head http://myurl | head -n 1 | grep "200" >/dev/null 2>&1; then
echo good
else
echo bad
fi
Вы можете использовать эту команду curl с -w "%{http_code}"
просто получить http код статуса:
[[ $(curl -s -w "%{http_code}" -A "Chrome" -L "http://myurl/" -o /dev/null) == 200 ]] &&
echo "good" || echo "bad"
Используя wget
if wget -O /dev/null your_url 2>&1 | grep -F HTTP >/dev/null 2>&1 ;then echo good;else echo bad; fi
Вам нужно на самом деле захватить вывод команды curl:
CURLCHECK=$(curl -s --head http://myurl | head -n 1)
Я удивлен, что вы не получаете ошибку "-s: команда не найдена"