Создание строки повторных символов в сценарии оболочки [дубликат]

38
задан Palec 16 November 2014 в 14:37
поделиться

5 ответов

len=100 ch='#'
printf '%*s' "$len" | tr ' ' "$ch"
32
ответ дан 27 November 2019 в 03:03
поделиться

На большинстве систем можно обойтись простым

N=100
myvar=`perl -e "print '.' x $N;"`
6
ответ дан 27 November 2019 в 03:03
поделиться

Вы можете использовать в стиле C для циклов в Bash:

num=100
string=$(for ((i=1; i<=$num; i++));do printf "%s" "#";done;printf "\n")

Или без цикла, используя printf , без использования каких-либо внешних элементов, таких как sed или tr :

num=100
printf -v string "%*s" $num ' ' '' $'\n'
string=${string// /#}
4
ответ дан 27 November 2019 в 03:03
поделиться

Решение без циклов:

N=100
myvar=`seq 1 $N | sed 's/.*/./' | tr -d '\n'`
2
ответ дан 27 November 2019 в 03:03
поделиться

Когда мне нужно создать строку, которая содержит $x повторений известного символа с $x ниже постоянного значения, я использую эту идиому:

base='....................'
# 0 <= $x <= ${#base}
x=5
expr "x$base" : "x\(.\{$x\}\)"    # Will output '\n' too

Выход:

.....
-1
ответ дан 27 November 2019 в 03:03
поделиться
Другие вопросы по тегам:

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