45 votes

Création d'une chaîne de caractères répétés dans le shell script.

Je dois générer une chaîne de points ( . caractères) comme variable.

Par exemple, dans mon script Bash, pour l'entrée 15 J'ai besoin de générer cette chaîne de longueur 15 : ...............

Je dois le faire de manière variable. J'ai essayé d'utiliser ceci comme base ( de Unix.com ) :

for i in {1..100};do printf "%s" "#";done;printf "\n"

Mais comment faire pour que la valeur 100 devienne une variable ?

4voto

Dennis Williamson Points 105818

Vous pouvez utiliser le style C for boucles dans Bash :

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

Ou sans boucle, en utilisant printf sans utiliser d'éléments externes tels que sed o tr :

num=100
printf -v string "%*s" $num ' ' '' $'\n'
string=${string// /#}

3voto

Diego Queiroz Points 478

La solution sans boucles :

N=100
myvar=`seq 1 $N | sed 's/.*/./' | tr -d '\n'`

2voto

Alexander Gladysh Points 9554
num=100
myvar=$(jot -b . -s '' $num)
echo $myvar

0voto

nsl Points 1058

Je ne sais pas si j'ai bien compris la question peut-être que vous pouvez faire comme ceci

function myPrint { for i in `seq 1 $2`; do echo -n $1; done }; myPrint <char> <number>

0voto

Till Points 699

Il suffit de mettre votre code dans $( )

myvar=$(for i in {1..100};do printf "%s" "#";done;printf "\n")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X