Когда вы hexdump вашей строки, вы видите, что использует оконные строки (с переводом каретки):
echo $IMAGE | hexdump -C
00000000 68 74 74 70 73 3a 2f 2f 64 6f 77 6e 6c 6f 61 64 |https://download|
00000010 73 2e 72 61 73 70 62 65 72 72 79 70 69 2e 6f 72 |s.raspberrypi.or|
00000020 67 2f 72 61 73 70 62 69 61 6e 5f 6c 69 74 65 2f |g/raspbian_lite/|
00000030 69 6d 61 67 65 73 2f 72 61 73 70 62 69 61 6e 5f |images/raspbian_|
00000040 6c 69 74 65 2d 32 30 31 38 2d 31 31 2d 31 35 2f |lite-2018-11-15/|
00000050 32 30 31 38 2d 31 31 2d 31 33 2d 72 61 73 70 62 |2018-11-13-raspb|
00000060 69 61 6e 2d 73 74 72 65 74 63 68 2d 6c 69 74 65 |ian-stretch-lite|
00000070 2e 7a 69 70 0d 0a |.zip..|
00000076
Чтобы исправить это, используйте
IMAGE=$(curl -I -s https://downloads.raspberrypi.org/raspbian_lite_latest | awk '/Location/ {print $2}' | tr -d "\r")
Я нашел альтернативу C # Webserver на CodePlex.
«... гибкий http-сервер, который может быть встроен в любое .Net-приложение. Он имеет модульную конструкцию. где функции добавляются с помощью модулей. Сервер также поддерживает REST и все http-глаголы ... "
У него есть класс HttpListener, который, как мне кажется, похож на System.Net.HttpListener, но я не использовал ни один из них пока что я не могу быть уверен.
Одно решение этого покрыто этим другим вопросом - можно дать себе полномочия выполнить HttpListener как неадминистратор.
Вы могли заставить приложение быть запущенным с командного файла, который разбирается в полномочиях и затем запускает реальное приложение.
Хорошо, таким образом, у Вас есть обычное настольное приложение, которое должно позволить входящие http соединения - хм - разве, брандмауэр окон не будет проблемой?
Принимая не, это почти походит на веб-сервис - Вы могли пойти тем путем - выставляют URL через это? Хотя мои знания .NET не достаточно глубоки, чтобы знать, необходимо ли все еще выполнить определенный http сервер для ответа на запросы. Spring. Сеть, вероятно, достойная внимания.