Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
lien:bash:perso:abs [2009/05/24 18:12] per |
lien:bash:perso:abs [2009/05/24 21:08] (Version actuelle) per |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | [[.:utilitaires|retour]] | ||
==== Guide avancé d'écriture des scripts Bash ==== | ==== Guide avancé d'écriture des scripts Bash ==== | ||
- | [[ABS |Advanced Bash-Scripting Guide]] | + | **Une exploration en profondeur de l'art de la programmation shell** |
- | Une exploration en profondeur de l'art de la programmation shell | + | |
[[http://abs.traduc.org/downloadmanuel.html |Téléchargement de ABS en français]] | [[http://abs.traduc.org/downloadmanuel.html |Téléchargement de ABS en français]] | ||
Ligne 92: | Ligne 92: | ||
fichier=${1%.*} #on enlève l'extension .html du fichier | fichier=${1%.*} #on enlève l'extension .html du fichier | ||
Donner dans notre cas la valeur de fichier | Donner dans notre cas la valeur de fichier | ||
- | i=1 #on initialise à 1, le numéro du script | + | |
- | deb=1 #le début commence à 1 | + | i=1 #on initialise à 1, le numéro du script |
- | for fin in $fin_script #on sépare les différents scripts | + | deb=1 #le début commence à 1 |
+ | for fin in $fin_script #on sépare les différents scripts | ||
Précisez les valeurs que prendra fin ............... | Précisez les valeurs que prendra fin ............... | ||
- | do | + | <code bash> |
- | sed -n "$deb,${fin}p" tmp |sed -e "s/<\/pre>//" -e "s/<pre class=\"programlisting\">//" -e 's/^ *$//' -e '/./,$!d' >${fichier}_${i}.sh | + | do |
- | deb=$fin #pour le script suivant | + | sed -n "$deb,${fin}p" tmp |sed -e "s/<\/pre>//;s/<pre class=\"programlisting\">//" -e 's/^ *$//;/./,$!d' >${fichier}_${i}.sh |
- | let i=i+1 #on incrémente le numéro de script | + | deb=$fin #pour le script suivant |
- | done | + | let i=i+1 #on incrémente le numéro de script |
+ | done | ||
+ | </code> | ||
On va faire les boucle manuellement : | On va faire les boucle manuellement : | ||
Avec la première valeur de fin, lancez sed -n "1, ...p" tmp |less | Avec la première valeur de fin, lancez sed -n "1, ...p" tmp |less | ||
Ligne 107: | Ligne 110: | ||
On recommence la boucle for avec fin qui prend la deuxième valeur | On recommence la boucle for avec fin qui prend la deuxième valeur | ||
lancez sed -n " ...,...p" tmp | lancez sed -n " ...,...p" tmp | ||
- | Pour ce deuxième cas, lancez sed -n "...,...p" tmp |sed -e "s/<\/pre>//" -e "s/<pre class=\"programlisting\">//" | + | Pour ce deuxième cas, lancez |
+ | <code bash> | ||
+ | sed -n "...,...p" tmp |sed -e "s/<\/pre>//" -e "s/<pre class=\"programlisting\">//" | ||
+ | </code> | ||
Notez les différences. | Notez les différences. | ||
+ | <code bash> | ||
Enfin, lancez sed -n "...,...p" tmp |sed -e "s/<\/pre>//" -e "s/<pre class=\"programlisting\">//" -e 's/^ *$//' -e '/./,$!d' | Enfin, lancez sed -n "...,...p" tmp |sed -e "s/<\/pre>//" -e "s/<pre class=\"programlisting\">//" -e 's/^ *$//' -e '/./,$!d' | ||
+ | </code> | ||
+ | |||
+ | === Comparaison des résultats avec diff === | ||
+ | <code bash> | ||
+ | sed -n " ...,...p" tmp >tmp1 | ||
+ | sed -n "...,...p" tmp |sed -e "s/<\/pre>//" -e "s/<pre class=\"programlisting\">//" >tmp2 | ||
+ | sed -n "...,...p" tmp |sed -e "s/<\/pre>//" -e "s/<pre class=\"programlisting\">//" -e 's/^ *$//' -e '/./,$!d' >tmp3 | ||
+ | puis diff tmp1 tmp2 | ||
+ | enfin diff tmp2 tmp3 | ||
+ | </code> | ||
==== Proposez un nouveau script, qui extrait tous les scripts des pages html ==== | ==== Proposez un nouveau script, qui extrait tous les scripts des pages html ==== | ||
Ligne 117: | Ligne 133: | ||
Pour chaque fichier html de la liste | Pour chaque fichier html de la liste | ||
faire | faire | ||
- | ./html2sh ........ | + | ./html2sh ........ |
fin de la boucle for | fin de la boucle for | ||