Aligner avec printf
Résolu/Fermé
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
-
Modifié le 19 juin 2019 à 17:33
bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024 - 26 juin 2019 à 16:26
bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024 - 26 juin 2019 à 16:26
5 réponses
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
19 juin 2019 à 20:47
19 juin 2019 à 20:47
salut,
passe le texte à la variable, puis
passe le texte à la variable, puis
printf '%-50s %s\n' "$texte" OK
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
23 juin 2019 à 14:00
23 juin 2019 à 14:00
autre méthode
$ cat code
#!/bin/bash
t1="test de la commande machintruc1 :"
t2="test de la commande bidule :"
t3="test de la commande bidultrucmachinchouette :"
status="OK"
printf -v x "%.0s." {1..50}; printf "%s%s%s\n" "$t1" ${x:${#t1}} $status
status="KO"
printf -v x "%.0s." {1..50}; printf "%s%s%s\n" "$t2" ${x:${#t2}} $status
status="OK"
printf -v x "%.0s." {1..50}; printf "%s%s%s\n" "$t3" ${x:${#t3}} $status
$
$ ./code
test de la commande machintruc1 :.................OK
test de la commande bidule :......................KO
test de la commande bidultrucmachinchouette :.....OK
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
20 juin 2019 à 15:42
20 juin 2019 à 15:42
$ texte="test de la commande pouicpouic"; echo -en "$texte"; printf '.%0.s' $(seq 1 $((50-${#texte}))); printf '%s\n' OK
test de la commande pouicpouic....................OK
$ texte="test de la commande milk"; echo -en "$texte"; printf '.%0.s' $(seq 1 $((50-${#texte}))); printf '%s\n' OK
test de la commande milk..........................OK
je ne saurais pas expliquer
'%0.s'. si quelqu'un sait...
pour l'emploi de
seq, par contre, c'est parce qu'il n'y a pas de développements de variables dans un Développement d'accolades.
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié le 21 juin 2019 à 15:34
Modifié le 21 juin 2019 à 15:34
hello
code simple, mais pas recommandé de le rediriger dans un fichier
je ne saurais pas expliquer '%0.s'. si quelqu'un sait...
http://manpagesfr.free.fr/man/man3/printf.3.html
Une précision éventuelle, sous la forme d'un point (« . ») suivi par un nombre. ..... le nombre maximum de caractères à imprimer depuis une chaîne pour les conversions s et S.
printf va s'exécuter N fois sans afficher les paramètres mais en affichant le texte hors format
code simple, mais pas recommandé de le rediriger dans un fichier
$ cat code
t1="test de la commande machintruc1 :"
t2="test de la commande bidule :"
t3="test de la commande bidultrucmachinchouette :"
status="OK"
printf "%.0s." {1..50}; printf "%s\r%s\n" $status "$t1"
status="KO"
printf "%.0s." {1..50}; printf "%s\r%s\n" $status "$t2"
status="OK"
printf "%.0s." {1..50}; printf "%s\r%s\n" $status "$t3"
$ ./code
test de la commande machintruc1 :.................OK
test de la commande bidule :......................KO
test de la commande bidultrucmachinchouette :.....OK
je ne saurais pas expliquer '%0.s'. si quelqu'un sait...
http://manpagesfr.free.fr/man/man3/printf.3.html
Une précision éventuelle, sous la forme d'un point (« . ») suivi par un nombre. ..... le nombre maximum de caractères à imprimer depuis une chaîne pour les conversions s et S.
printf va s'exécuter N fois sans afficher les paramètres mais en affichant le texte hors format
$ printf " hello%.0s world" {1..5}; echo
hello world hello world hello world hello world hello world
lEprofSonDkon
Messages postés
211
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
8 octobre 2022
13
Modifié le 21 juin 2019 à 15:33
Modifié le 21 juin 2019 à 15:33
d'accord, merci.
petite précision. c'est plutôt dans l'autre sens :
non ?
petite précision. c'est plutôt dans l'autre sens :
printfva s'exécuter autant de fois qu'il y a d'arguments, sans les afficher, mais en affichant les indications de format (le texte dans le format)
non ?
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié le 21 juin 2019 à 15:39
Modifié le 21 juin 2019 à 15:39
oui, par hors format, je voulais dire ce qui n'est pas précédé d'un % dans la chaine entre "
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
24 juin 2019 à 10:31
24 juin 2019 à 10:31
Bonjour,
Merci pour votre réponse. CE code est presque ce que je souhaite mais sauf incompréhension de ma part, il y a un point que ne convient pas à je que je souhaite faire.
ici, la réponse est donnée APRES l'exécution de la commande. De mon côté j'aimerais que l'utilisateur voit le temps d'exécution de sa requête soit chronologiquement:
test de la commande machintruc1 : ....................
lancement la commande
récupération du statut OK ou KO
enfin:
test de la commande machintruc1 : .................... OK ou KO
Merci pour votre réponse. CE code est presque ce que je souhaite mais sauf incompréhension de ma part, il y a un point que ne convient pas à je que je souhaite faire.
ici, la réponse est donnée APRES l'exécution de la commande. De mon côté j'aimerais que l'utilisateur voit le temps d'exécution de sa requête soit chronologiquement:
test de la commande machintruc1 : ....................
lancement la commande
récupération du statut OK ou KO
enfin:
test de la commande machintruc1 : .................... OK ou KO
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
24 juin 2019 à 10:59
24 juin 2019 à 10:59
essayer
$ t2="test de la commande bidule :"
$ printf -v x "%.0s." {1..50}; printf "%s%s" "$t2" ${x:${#t2}}; sleep 4; tput bel; echo OK
test de la commande bidule :......................OK
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
>
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
24 juin 2019 à 11:21
24 juin 2019 à 11:21
Bien vu :-) mais ma commande est une requête API dont le temps d'exécution est très aléatoire. Je ne peux pas lui fixer un durée.
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
24 juin 2019 à 13:17
24 juin 2019 à 13:17
le sleep c'est juste comme exemple
$ printf -v x "%.0s." {1..50}; printf "%s%s" "$t2" ${x:${#t2}}; ta_commande && echo OK || echo KO
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
26 juin 2019 à 16:26
26 juin 2019 à 16:26
Nickel. Merci.
Modifié le 20 juin 2019 à 14:56
merci, c'est presque ça.
Pour plus de lisibilité, j'aimerais garder les .... avant le OK ou KO et donc remplacer les blancs par des "."
un idée? :-)
De plus, l'idéal serait que comme le shell d'origine, le texte soit affiché AVANT le résultat OK ou KO.