mdadm RAID5 3 * 3TB, 1 Диск с данными

Стандарт HTTP определяет, что все строки заголовков, а также пустая строка, обозначающая конец заголовков, должны использовать окончания CRLF (возврат каретки, перевод строки). Многие клиенты либеральны и принимают только LF, но большинство серверов, включая Google, соблюдают стандарт.

curl -I отображает заголовки в том виде, в котором они отправлены сервером, включая символы CR. Что касается системы unix, символ CR является частью строки, только символ LF завершает строку. Подстановка команд удаляет завершающие символы LF, но не затрагивает символы LF. Таким образом, команда susbtitution $ (curl -s -I https: //google.com | grep Server) возвращает (в вашем случае) строку Server: gws␍ (где - возврат каретки), а команда echo "$ (curl -s -I https: //google.com | grep Server)" abc отображает строку, содержащую

Server: gws␍abc

- это команда терминалу переместить курсор в начало строки, поэтому символы abc заменяют первые три символа строки.

Это также объясняет, почему трассировка из bash -x несколько искажена.

Команда echo abc "$ (curl -s -I https: //google.com | grep Server)" отображает строку, содержащую

Server: gwsabc␍

Символ ␍ перемещает курсор в начало строки, то перевод строки перемещает курсор в начало следующей строки, поэтому ␍ не оказывает видимого эффекта.

Чтобы избежать осложнений из-за CR, удалите их из ввода.

echo "$(curl -s -I https://google.com | tr -d '\r' | grep Server)" abc
1
31.12.2017, 20:33
0 ответов

Теги

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