69 votes

Imprimer un caractère à plusieurs reprises dans bash

Existe-t-il un moyen d'imprimer le même caractère à plusieurs reprises dans bash, tout comme vous pouvez utiliser cette construction pour le faire en python :

 print('%' * 3)

donne

 %%%

54voto

ghostdog74 Points 86060

bien sûr, utilisez simplement printf et un peu de manipulation de chaîne bash

 $ s=$(printf "%-30s" "*")
$ echo "${s// /*}"
******************************

Il devrait y avoir un chemin plus court, mais actuellement c'est comme ça que je le ferais. Vous pouvez en faire une fonction que vous pouvez stocker dans une bibliothèque pour une utilisation future

 printf_new() {
 str=$1
 num=$2
 v=$(printf "%-${num}s" "$str")
 echo "${v// /*}"
}

Essai:

 $ printf_new "*" 20
********************
$ printf_new "*" 10
**********
$ printf_new "%" 10
%%%%%%%%%%

12voto

manojlds Points 96599

J'aime ça:

 echo $(yes % | head -n3)

Vous n'aimerez peut-être pas ceci :

 for ((i=0; i<3; i++)){
   echo -ne "%"
}

Vous pourriez aimer ceci :

 s=$( printf "%3s" ); echo " ${s// /%}"

Source : http://dbaspot.com/shell/357767-bash-fast-way-repeat-string.html

Il existe aussi ce formulaire, mais pas très utile :

 echo %{,,}

4voto

Greg Hewgill Points 356191

C'est moche, mais tu peux faire comme ça :

 $ for a in `seq 5`; do echo -n %; done
%%%%%

Bien sûr, seq est un programme externe (que vous possédez probablement).

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