Если вам нужно использовать ] echo
, затем попробуйте использовать return в кавычках, то есть '\ r'
, а не только \ r
. Вся строка выглядит следующим образом:
echo -ne $((($i+1)/100))\%'\r'
И взгляните на Почему printf лучше, чем echo?
Текст, создаваемый командами в терминале, представляет собой текстовые строки. Просмотр необработанных двоичных данных в терминале без преобразования их в какое-либо текстовое представление обычно приводит к «искаженному выводу» (, например, при запуске cat
со сжатым файлом ), а в некоторых случаях может даже перевести терминал в непригодное для использования состояние.
Числа в выводе ls -l
представляют собой текстовые строки.
Для чтения текста как целых чисел, например, в. программа C, программа должна будет прочитать их как текстовые строки, а затем преобразовать их в целые числа, используя, например,. strtol()
или используйтеscanf()
(или эквивалент )с правильной строкой формата.
Инструменты оболочки, которые считывают целые числа, такие как awk
, например, обычно уже выполняют это преобразование за кулисами в соответствии с правилами, реализованными инструментом.
Примечание. :Программа на C не должна анализировать числа из вывода ls -l
. Он должен вызывать stat()
или lstat()
для файлов, возвращенных readdir()
.