Faire suivre une variable avec des espaces
Bonjour,
Après quelques tests et recherches infructueuses, je demande un peu d'aide. :aie:
J'ai crée un script qui écrit un texte (donné en argument) et le complète avec des espaces pour obtenir un texte de 24 caractères.
Voici mon script char24
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#! /bin/bash
nbChar=${#1}
nbEsp=$((24-$nbChar))
i=0
esp="x"
while true
do
i=$(($i+1))
result=`echo -n "${result}${esp}"`
if [ $i -eq $nbEsp ]
then break
fi
done
txt=`echo -${1}${result}-`
echo $txt |
Si j'écris
Code:
char24 "un texte au hasard"
J'obtiens bien
Code:
un texte au hasardxxxxxx
Ca fonctionne donc si esp="x".
Mais j'ai un problème lorsque esp=" "... :aie:
Il ne prends pas en compte les espaces !
Voyez-vous une solution ?
[Résolu] Faire suivre une variable avec des espaces
Citation:
Envoyé par
Guardian
Tu as essayé avec le code ASCII ?
Avec esp=$'\040', c'est la même chose... bash élimine les espaces superflues.
Citation:
Envoyé par
Schmorgluck
Tu as essayé avec printf ?
Ca fonctionne très bien... en une seule ligne !
Je ne connaissais pas (je débute depuis quelques jours...)
Il faut juste ajouter des guillemets entre la variable pour ne pas répéter les espaces lors d'un texte composé de plusieurs mots.
Soit...
Code:
1 2
| #! /bin/bash
printf "%-24s" "$1" |
Merci pour les infos !