diff options
author | Robert Alessi <alessi@robertalessi.net> | 2018-09-19 17:29:45 +0200 |
---|---|---|
committer | Robert Alessi <alessi@robertalessi.net> | 2018-09-19 17:29:45 +0200 |
commit | c2698094f2cd48a36dcadf161127d69bc33697f9 (patch) | |
tree | 70b06b9dd5946372d559bcaf212b576fac4e9342 /fichiers | |
parent | bd3638c2dd0932176a4bc4660fa58b9abea1e11e (diff) | |
download | courses-c2698094f2cd48a36dcadf161127d69bc33697f9.tar.gz |
03-grep-bash.tex: added conditions (1/2)
Diffstat (limited to 'fichiers')
-rw-r--r-- | fichiers/03-grep-bash.tex | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/fichiers/03-grep-bash.tex b/fichiers/03-grep-bash.tex index 26409f9..1dc9e2c 100644 --- a/fichiers/03-grep-bash.tex +++ b/fichiers/03-grep-bash.tex | |||
@@ -634,6 +634,74 @@ Terminé. ./backup.sh a copié 4 fichiers .tex dans Houba | |||
634 | et l'archive Houba.zip a été créée. | 634 | et l'archive Houba.zip a été créée. |
635 | \end{minted} | 635 | \end{minted} |
636 | 636 | ||
637 | \section{Conditions} | ||
638 | \label{sec:conditions} | ||
639 | Il est souvent très utile de n'exécuter des lignes de code que si | ||
640 | certaines conditions sont remplies. Reprenons ici l'exemple du script | ||
641 | \verb|backup.sh|: au moment où le script crée le répertoire de | ||
642 | sauvegarde, il ne contrôle pas si ce répertoire existe déjà, ce qui est | ||
643 | un défaut. Voici comment on peut créer une condition adaptée à cette | ||
644 | situation: | ||
645 | \begin{minted}[linenos]{bash} | ||
646 | if [ -d $backupdir ] | ||
647 | then | ||
648 | echo "Le dossier $backupdir existe déjà. Veuillez relancer le" | ||
649 | echo "programme et saisir un autre nom." | ||
650 | exit 1 | ||
651 | else | ||
652 | mkdir "$backupdir" | ||
653 | fi | ||
654 | \end{minted} | ||
655 | \begin{quoting} | ||
656 | \textbf{Commentaire:} | ||
657 | \begin{enumerate} | ||
658 | \item Observez la structure de la condition: | ||
659 | \begin{itemize} | ||
660 | \item ligne 1: \mintinline{bash}|if| $\rightarrow$ \emph{si | ||
661 | <condition>} où la condition est posée entre crochets. Dans | ||
662 | l'expression entre les crochets, % | ||
663 | \verb|-d $backupdir|, \verb|-d| signifie: \verb|$backupdir| | ||
664 | existe \emph{et} est un répertoire; | ||
665 | \item ligne 2: \mintinline{bash}|then| $\rightarrow$ \emph{alors, | ||
666 | passez à la ligne suivante}; | ||
667 | \item ligne 6: \mintinline{bash}|else| $\rightarrow$ | ||
668 | \emph{autrement, passez à la ligne suivante}; | ||
669 | \item ligne 8: \mintinline{bash}|fi| $\rightarrow$ \emph{fin de la | ||
670 | condition} (en fait les deux lettres de la conjonction \verb|if| | ||
671 | écrite à l'envers). | ||
672 | \end{itemize} | ||
673 | \item À la ligne 5, la commande \verb|exit 1| ordonne au programme | ||
674 | de se terminer immédiatement et de renvoyer la valeur \verb|1| | ||
675 | comme numéro d'état (\emph{status number}). Par convention, | ||
676 | \verb|0| est pour \emph{true} (le programme a bien été exécuté) et | ||
677 | \verb|1| est pour \emph{false} (il y a eu une erreur). | ||
678 | \end{enumerate} | ||
679 | \end{quoting} | ||
680 | |||
681 | Voici donc comment se présente le script \verb|backup.sh|: | ||
682 | \begin{minted}[linenos]{bash} | ||
683 | #!/bin/bash | ||
684 | echo "Veuillez choisir l'extension des fichiers à sauvegarder" | ||
685 | echo "(sans le point):" | ||
686 | read -p 'extension: ' ext | ||
687 | echo "Veuillez choisir le nom du dossier de sauvegarde:" | ||
688 | read -p 'dossier: ' backupdir | ||
689 | if [ -d $backupdir ] | ||
690 | then | ||
691 | echo "Le dossier $backupdir existe déjà. Veuillez relancer le" | ||
692 | echo "programme et saisir un autre nom." | ||
693 | exit 1 | ||
694 | else | ||
695 | mkdir "$backupdir" | ||
696 | fi | ||
697 | cp *.$ext "$backupdir" | ||
698 | nbre=$(ls $backupdir/*.$ext | wc -l) | ||
699 | zip -r "$backupdir".zip "$backupdir" | ||
700 | echo "Terminé. $0 a copié $nbre fichiers .$ext dans $backupdir" | ||
701 | echo "et l'archive $backupdir.zip a été créée." | ||
702 | \end{minted} | ||
703 | |||
704 | |||
637 | \hfill\verb|../..| à suivre | 705 | \hfill\verb|../..| à suivre |
638 | 706 | ||
639 | \end{document} | 707 | \end{document} |