Bonjour!
J’aimerais afficher plusieurs espaces dans un echo. Cependant, il ne s’en affiche que 1 à chaque fois. Voici le bout de code en question ( kna )
percentbar() {
echo -n "["
i=1 ; j=1
while [ "$i" -le "$(($1/2))" ]; do
echo -n "="
i=$(($i+1))
done
echo -n ">"
while [ "$j" -le "$(((100-$1)/2))" ]; do
echo " "
j=$(($j+1))
done
echo "]"
}
à la place de l’espace entre les doubles-quotes, je mets un “-” pour remplacer, mais c’est beaucoup moins estétique…
ben non, ça ne marche pas pour moi… enfin, juste la fonction dans un terminal, ça roule, mais dans le script que je l’utilise, non. Bon, je le met en entier ici, il faut regarder la partie pour mpd :
[code]#!/bin/sh #script pour avoir une barre de status dans dwm/wmii
À la fin il faut entourer tes variables par des guillemets, sinon echo remplace les retours chariot par des espaces et concatène ensemble les espaces consécutifs.
Au lieu de t’enquiquiner à mettre des guillemets partout, le plus simple est probablement de tout inclure à l’intérieur d’une seule paire de guillemets (des doubles-guillemets pour conserver l’expansion des variables shell) :
####on affiche####
echo -n "$1 $MPDSONG $MPDBAR | /home:$HOME | /:$ROOT | $UPTIME | Bat:$BATTERIE | $MAILS | Vol: $VOL | $DATE"
Prends aussi l’habitude de mettre des guillemets partout quand tu récupères le résultat d’une commande dans une variable, sinon tu risques d’avoir des surprises dans certains cas particuliers (je n’ai pas retrouvé d’exemple – j’avoue j’ai à peine cherché – mais tu peux me croire sur parole j’ai eu des bugs qui ont été résolus de cette manière) :
évidemment, les espaces n’étaient pas enregistrés dans la variable.
Depuis le temps que je cherche…
Merci!
Du coup, ça change un peu la fin, comme tu le suggères syam, mais merci quand même