циклическое переопределение в bash

Что здесь происходит?

content=$(curl -s http://localhost:3000 -I | grep -Fi Content-Type | awk '{print $2}')
echo "${content}1234"

res:

1234ication/x-protobuf

curl -I ответ

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/x-protobuf
Content-Encoding: gzip
Content-Length: 10013
Date: Tue, 14 Aug 2018 18:00:06 GMT
Connection: keep-alive

как видите, веб-сервер - это обычное экспресс-приложение, без промежуточного программного обеспечения, все шаблоны, ничего особенного

более того, проверка

if [ "$content" == "application/x-protobuf" ] 

всегда ложно (я пробовал и другие варианты условия)

  1. Что такое бизнес с циклическим переопределением
  2. почему на экране не печатается контент?

person Nick Ginanto    schedule 14.08.2018    source источник
comment
Используйте echo $content | cat -v, чтобы увидеть скрытые символы в вашей строке.   -  person ewindes    schedule 14.08.2018
comment
application/x-protobuf^M откуда это взялось ??   -  person Nick Ginanto    schedule 14.08.2018
comment
В вашем скрипте есть окончания строки DOS, что приводит к значению content, заканчивающемуся возвратом каретки.   -  person chepner    schedule 14.08.2018
comment
это набирается в терминале на Mac в bash: /   -  person Nick Ginanto    schedule 14.08.2018
comment
окончания строк из сетевых протоколов обычно являются CRLF. Вы можете попробовать awk '{sub(/\r$/,""); print $2}'   -  person glenn jackman    schedule 14.08.2018
comment
В спецификации протокола HTTP (RFC2616) говорится, что заголовки завершаются CRLF. Curl сбрасывает только то, что получает от сервера.   -  person ewindes    schedule 14.08.2018
comment
Еще один простой способ удалить эти символы: tr -d '\r'   -  person ewindes    schedule 14.08.2018
comment
Кстати, это не ваша проблема (которая уже была описана выше), но [ foo == foo ] не гарантированно будет истинным в оболочках POSIX сам по себе, потому что == не является оператором сравнения строк, определенным POSIX. Используйте =, чтобы быть надежным и портативным.   -  person Charles Duffy    schedule 14.08.2018