Как повторить символ N раз с printf

390
LouieV

У меня есть функция, которая передает строку. Я хочу, чтобы эта функция дополняла эту строку *строкой. Допустим, я передаю, foo barя хочу напечатать что-то вроде

*************** *** foo bar *** *************** 

Я сталкиваюсь с проблемами при оценке длины строки и использую это с printf. Вот что я получил

install_block() { dir="$1" main_echo="*** $dir ***" length="${#main_echo}" pad=$(printf '%.0s*' ; echo) echo $pad echo $main_echo echo $pad } 
0
Кавычки переменные! `echo $ main_echo`, где в` main_echo` есть звездочки, вызывает удар с новой силой. Kamil Maciorowski 5 лет назад 1
`dir =" foo bar "; main_echo = "*** $ dir ***"; echo "$ " ` Cyrus 5 лет назад 1

1 ответ на вопрос

1
glenn jackman

я хотел бы использовать

pad=$(printf '%*s' $length "" | tr ' ' '*') 

или jot(установите пакет "athena-jot", для Ubuntu)

pad=$(jot -b '*' -s '' $length) 

Кроме того, не забудьте процитировать ваши переменные

echo "$pad" echo "$main_echo" echo "$pad" 

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