эхо-текст после команды curl в той же строке

Если это - просто текстовый файл, можно использовать команду text2pdf сделать это:

$ text2pdf -o  

Пример

Вот файл примера.

$ cat test.txt 
This is a test file.

Преобразованный в PDF:

$ text2pdf -o test.pdf test.txt

Результаты:

                    sample pdf

Не уверенный в других дистрибутивах, но команде text2pdf часть пакета pdflib-lite на Fedora.

Ссылки

3
20.07.2015, 01:11
3 ответа
echo $(curl -s -I https://google.com|grep Server)|cat -A

показывает, что значение, возвращаемое скруткой, имеет ^M (возврат каретки). Когда вы распечатываете вывод скручивания, возврат каретки возвращает 'курсор' обратно к началу строки, где затем распечатывает 'abc', перезаписывая 'Serv'.

Во второй попытке возврат каретки не имеет очевидного эффекта.

2
27.01.2020, 21:16

Попробуйте удалить возврат каретки:

 echo "$(curl -s -I https://google.com|grep Server)" abc | tr -d "\r"

Вывод:

Server: GFE/2.0 abc
1
27.01.2020, 21:16

Стандарт 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
2
27.01.2020, 21:16

Теги

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