Каждый заголовок завершается парой возврата каретки / перевода строки (CR / LF), но только LF удаляется подстановкой команды, оставляя CR как часть значения curlResult
.
$ curlResult="$(curl -Isk https://stackoverflow.com | head -n 1)"
$ echo "${curlResult@Q}"
$'HTTP/2 200 \r'
Вы можете использовать сопоставление с образцом для сопоставления непробельного префикса строки.
$ [[ $curlResult = "HTTP/2 200" ]] && echo success
$ [[ $curlResult = "HTTP/2 200"*([[:space:]]) ]] && echo success
success
*([[:space]])
соответствует нулю или большему количеству пробельных символов, включая возврат каретки.