Intereting Posts
Выполнять скрипт пользователя как root в приложениях запуска Не использовать определенные области памяти из-за ошибок iptables: загрузка квоты на каждый MAC-адрес для всех хостов получить корень документа apache с помощью сценария оболочки Использовать перенаправление оболочки для предварительного ввода текста в интерактивную команду? Где можно задать дополнительные настройки (например, fast_reauth) в сетевом менеджере? Как я могу создать пакет .deb с моей скомпилированной сборкой OpenCV? Советы по использованию Linux без раздела подкачки Как установить WPS Презентация программы Powerpoint по умолчанию в Debian? Можно ли использовать divert в качестве альтернативы ipfw fwd? Применяйте флаги расширения параметров к литералу строки или массива в zsh Сделать Apache доступ к скрытым файлам (Solaris) Как перенести первые буквы двух слов? Как запустить sh из файла sh Является ли переменная среды $ HOME всегда заданной в системе Linux?

Недопустимый вход суффикса numfmt

Я использую numfmt чтобы преобразовать numfmt Content-Length из байта в формат IEC, то есть 21M

 $ curl -sI http://jruby.org.s3.amazonaws.com/downloads/1.7.12/jruby-bin-1.7.12.tar.gz|grep Length|cut -d' ' -f2|numfmt --from=auto --to=iec 'numfmt: invalid suffix in input: '21981488 

Препятствует тому, почему numfmt жалуется на недопустимый суффикс. Когда я разделяю команду и проверяю вывод cut и вручную эхо значение numfmt , он работает как ожидалось

 $ curl -sI http://jruby.org.s3.amazonaws.com/downloads/1.7.12/jruby-bin-1.7.12.tar.gz|grep Length|cut -d' ' -f2 - 21981488 $ echo 21981488|gnumfmt --from=auto --to=iec 21M 

Я что-то упустил?

В coreutils-8.21 произошла ошибка, в которой мы неправильно приводили неверный контент. Если вы запускаете с уже выпущенным 8.22, он дает более очевидную ошибку:

 numfmt: invalid suffix in input: '21981488\r' 

Обратите внимание, если после номера есть пробелы или вкладки, то numfmt будет игнорировать их (поскольку он использует isblank ()), но для игнорирования \ r потребуется использовать isspace (). Игнорирование просто пробелов верно I thnk.

Кажется, что вывод curl содержит возврат каретки и число , переданное numfmt включает в себя один. Вы можете удалить это, прежде чем перейти к numfmt :

 curl ... | awk -F: '/Length/{sub("\r", "", $2); print $2}' | numfmt ... 

Кроме того, обратите внимание, что grep и cut обычно можно заменить альтернативной одиночной командой.