Intereting Posts
Как установить переменную равную выходу из команды в GRUB2? В каком разделе идут описания C-структур данных? Почему в журналах отображается другой порт подключения ssh #, чем указанный? Я просто использовал «mv» вместо «cp» для важных файлов. Как этого избежать в будущем? Пакетное перемещение всех файлов из подкаталогов в родительский каталог, но файлы имеют одинаковое имя Как сделать сценарий ожидаемого, чтобы ожидать любой из нескольких текстов Правило Udev автоматически отключает сенсорную панель при подключении USB-мыши База данных mysql недоступна Не работает аутентификация открытого ключа ssh Разрешить только определенный исходящий трафик на определенных интерфейсах Передача аргументов командной строки java из сценария JPackage предупреждение о потреблении памяти Клиент электронной почты, который понимает как HTML, так и maildir Пропущенная команда FTP Почему не выводится текст, отправленный в эхо?

печатать символы повторно, используя символ звездочки в bash

print '*' * 80 

Этот фрагмент python печатает 80 звездочек, которые я часто использую в качестве разделителей в файлах журналов.

Как я могу сделать это в сценарии bash, используя перегрузку оператора?

В оболочке ( ksh , zsh , bash ) вы можете:

 stars=$(printf '%*s' 80 '') echo "${stars// /*}" 

С bash есть возможность делать:

 printf -v stars '%*s' 80 '' echo "${stars// /*}" 

Объяснение: printf использует строку формата %*s что означает создание строки длины, которая предоставляется через аргумент. Таким образом, первый аргумент ( 80 ) определяет длину, а второй аргумент указывает строку ( '' , пустую строку) для эффективной печати, а пустую – до определенной ширины. Обратите внимание, что это также можно выразить как printf "%80s" '' , хотя я использовал параметризованную версию для длины, чтобы сделать ее явной, что она может быть переменным параметром.