T’as trouvé la solution avant même que j’ai le temps de voir le sujet! C’est pas gentil.
Pour la peine deux choses tiens :
Je connais pas cette astuces de bash/zsh en fait c’est quoi exactement ?
Ensuite trois petites remarques pas méchantes pour deux sous sur ton code :
[ul]
[li]df -h > /tmp/dfh
ED_0=`head -2 /tmp/dfh | grep " /" | tr -s " " | cut -d " " -f 5`
Passer par un fichier n’est pas forcément souhaitable parce que c’est plus lent et tu dois le supprimer à la fin, faire gaffe qu’il n’existe pas déjà,… donc tu peut faire ça
(oui j’aime l’uniligne )[/li]
[li]Ensuite je ne comprend pas très bien l’astuce du « head -2 | grep " /" ? C’est pour trouver la partition root ? Si c’est le cas tu peut directement le faire avec grep :
[li]Enfin dernière chose, awk/gawk c’est plus simpas à utiliser que cut qui est vraiment très basique il permet de remplacer « tr -s " " | cut -d " " -f 5 » par
Enfin on peut retirer le dernier caractère en awk avec
Sinon il y a ma vielle méthode en sed :
n’est ce pas joli ? Il te vire même le %.
Edit: à force de chercher j’ai vu une solution en awk pur (index permet de bien vérifier que c’est un % qu’on enlève :
et la version full sed :
Bon maintenant je vais prendre médicament… merci beaucoup j’ai pu approfondir mes connaissances
Là c’est plus vraiment du bash, ça s’exécute pareil sur tout shell POSIX.
En fait généralement ce genre de traitement (et les tâche plus programmation genre calcul mathématiques), on peut rapidement se retrouver à écrire simplement du code en sed (pour les tordu), gawk ou perl.
Pourtant, si tu connais un tant soit peu les regex, c’est façile:
avec sed, qui utilise les regex à la méthode de perl,
c’est s/expression_a_remplacer/texte_de_remplacement/
sachant que:
le . désigne “n’importe quel caractère”,
le $ signifie que ce n’importe quel caractère doit se trouver à la fin de la chaine examinée et
le // signifie qu’il n’y a donc aucun texte de remplacement vu qu’il n’y a rien entre chaque “/”, donc le dernier caractère de la chaine est remplacé par rien ==> supprimé.