2010-04-20 11 views
0

En perl vous pouvez simplement écrire print "-" x 20 et vous obtenez une ligne avec des tirets ... mais j'ai besoin de la même chose dans bash/commandline on linux sans perl/(g) awk etc. des idées? L'intention est de l'utiliser dans le exec de la commande find et je veux éviter d'utiliser l'écho simple « --------- » ...Equivalent de print "-" x20 de perl dans Bash ou ligne de commande

Répondre

2

vous pouvez vous créer votre propre fonction

customprint(){ 
    num=$1 
    symbol=$2 
    for((i=1;i<=$num;i++));do printf "%s" $symbol; done 
} 

customprint 20 "-" 

ou

customprint(){ 
    num=$1 
    symbol=$2 
    a=$(printf "%0${num}s") 
    echo ${a// /$symbol} 
} 

customprint 20 "-" 

ou

num=20 
eval printf '%.0s-' {1..$num} 
+0

+1, bon ... – codaddict

+0

pas Si tel était 'echo $ {// un 0/symbole $} '? –

+0

non, "% 0 s" vous donne des espaces. seulement si vous utilisez "% 0 d" cela vous donnera-t-il 0 premiers – ghostdog74

1

j'ai donc une solution peu plus courte

Ce qui suit produira une ligne avec 60 tirets ... sans fonction ...

echo ={1..60} | sed "s/[0-9]* \?//g" 
+0

dans votre question, vous avez dit sans utiliser Perl/awk, alors maintenant vous utilisez sed? – ghostdog74

+0

c'est plus court, sans utiliser d'outils externes: 'eval printf '% .0s-' {1 .. $ num}' – ghostdog74

+0

Oui, vous avez raison. Vos suggestions sont plus fraîches que les miennes. Merci. – khmarbaise

Questions connexes