stdout
не будет содержать Could not resolve host
, но выводится stderr
. В то время как вы могли бы захватить stderr
и затем выполнить сопоставление строк, существует гораздо более простое решение: код выхода.
Здесь вы можете увидеть , curl
всегда завершает работу с кодом 6, когда не удается определить хост. Таким образом, достаточно просто проверить код завершения:
curl -i -k http://nowaythisthingexists.test
if [[ $? -eq 6 ]]
then
echo "oopsie, couldn't resolve host!"
fi
В качестве альтернативы, если вы действительно хотите сделать это путем сопоставления строк, убедитесь, что перенаправили stderr в stdout (и, возможно, также уничтожите stdout, чтобы он не вмешиваться):
output=$(curl -i -k http://nowaythisthingexists.test 2>&1 >/dev/null)
if [[ "$output" = *"Could not resolve host"* ]]
then
echo "oopsie, couldn't resolve host!"
fi
Очевидно, что вы не получаете вывод своего запроса таким образом, поэтому вам нужно перенаправить его куда-нибудь более полезное, чем /dev/null
- файл или Unix труба. Теперь все становится сложнее, чем нужно.