diff --git a/HowtoBash.md b/HowtoBash.md index b3c3d7fb..6dad1abe 100644 --- a/HowtoBash.md +++ b/HowtoBash.md @@ -31,6 +31,15 @@ alt+d : Efface un mot à droite du curseur ## Variables +### Environnement + +~~~{.bash} +$PPID +$BASHPID +$! +$$ +~~~ + ### Initialiser ~~~{.bash} @@ -59,9 +68,36 @@ echo $var "joue au $foot" #car sinon c'est bien le contenu de la variable $foot qui sera remplacé et non $foo ~~~ -## Récupérer tout stdin dans une variable +## Conditions -### Complet +~~~{.bash} +true && echo "C'est toujours vrai" +false || echo "Ça sera toujours vraiment faux" +[ $? -eq 0 ] && { echo "tâche"; sleep 1; echo -e "\e'a plus!!" } +~~~ + +## Processus + +~~~{.bash} +( echo "Je suis un fils du script principal, mais on attend que je meure."; exit 0; ) +( echo "Libreee !"; yes "Libre je dis !"; ) & +sleep 10 && kill $! #on tue le dernier fils créé +~~~ + +> Note: Dans une boucle, ne pas créer de process via *(* *)* sinon un usage comme **break** ou **continue**, ... ne fonctionnera pas : +> ~~~{.bash} +> while : +> do +> : && { echo "Stop !"; break; } +> done +> # ( echo "Stop !"; break; ) dans cet exemple ne quittera pas la boucle -car break dans un process fils-, et donc restera infini +> ~~~ + +## Astuces [concrètes] + +### Récupérer tout stdin dans une variable + +#### Complet ~~~{.bash} var="$(cat <&0)" @@ -69,7 +105,7 @@ var="$(cat <&0)" var="$(cat -)" ~~~ -### Ligne par ligne +#### Ligne par ligne ~~~{.bash} var= @@ -77,4 +113,10 @@ while read ligne do var="${var}${ligne}" done <&0 +~~~ + +autrement : + +~~~{.bash} +cat <&0 | (while read ligne; do ... done) ~~~ \ No newline at end of file