From 01cc51b33ac7dd9b3404478a09642c5005bc228a Mon Sep 17 00:00:00 2001
From: Robert Alessi <alessi@robertalessi.net>
Date: Wed, 19 Sep 2018 20:58:47 +0200
Subject: 03-grep-bash.tex: added tests

---
 fichiers/03-grep-bash.tex | 83 +++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 80 insertions(+), 3 deletions(-)

(limited to 'fichiers/03-grep-bash.tex')

diff --git a/fichiers/03-grep-bash.tex b/fichiers/03-grep-bash.tex
index 1dc9e2c..4ce1bba 100644
--- a/fichiers/03-grep-bash.tex
+++ b/fichiers/03-grep-bash.tex
@@ -11,7 +11,8 @@
 \mdfsetup{
   backgroundcolor=Lavender,
   hidealllines=true}
-\usepackage{minted}
+\usepackage[newfloat]{minted}
+\SetupFloatingEnvironment{listing}{listname=Listings}
 \surroundwithmdframed{minted}
 \setminted{
   breaklines,
@@ -23,6 +24,8 @@
 \maketitle
 \renewcommand{\contentsname}{Sommaire}
 \tableofcontents
+\listoflistings
+\listoftables
 
 \chapter{grep, les expressions régulières}
 \label{cha:grep-les-expressions}
@@ -106,6 +109,7 @@ symboles suivants\footnote{Cette liste n'est pas exhaustive.}:
   \verb|\<| et \verb|\>| & représentent respectivement un début et une
                            fin de mot\\
   \bottomrule
+  \caption{grep \emph{patterns}}
 \end{xltabular}
 
 \paragraph{grep, egrep}
@@ -678,8 +682,10 @@ fi
   \end{enumerate}
 \end{quoting}
 
-Voici donc comment se présente le script \verb|backup.sh|:
-\begin{minted}[linenos]{bash}
+Voici donc comment se présente le script \verb|backup.sh| une fois la
+condition insérée:
+\begin{listing}[h]
+\begin{minted}[linenos,highlightlines={7-14}]{bash}
 #!/bin/bash
 echo "Veuillez choisir l'extension des fichiers à sauvegarder"
 echo "(sans le point):"
@@ -700,7 +706,78 @@ zip -r "$backupdir".zip "$backupdir"
 echo "Terminé. $0 a copié $nbre fichiers .$ext dans $backupdir"
 echo "et l'archive $backupdir.zip a été créée."
 \end{minted}
+\caption{bash: exemple de condition if-then-else}
+\label{lst:if-then-else}
+\end{listing}
+
+\subsection{Tests}
+\label{sec:tests}
+Le tableau suivant donne la liste des tests les plus répandus que l'on
+peut associer aux conditions. Les tests sont placés entre crochets
+droits comme le montre la ligne~7 du \vref{lst:if-then-else}.
+\begin{xltabular}{.77\linewidth}{lX}
+  \toprule
+  Opérateur  & Description \\
+  \midrule\endhead
+  \verb|! expr| & \verb|expr| est faux \\
+  \verb|-n str| & la longueur de \verb|str| $>0$\footnote{Comprendre:
+                  \texttt{str} existe.} \\
+  \verb|-z str| & la longueur de \verb|str| $=0$\footnote{Comprendre:
+                  \texttt{str} n'existe pas.}\\
+  \verb|str1 = str2| & \verb|str1| est égal à \verb|str2|\\
+  \verb|str1 != str2| & \verb|str1| n'est pas égal à \verb|str2|\\
+  \verb|int1 -eq int2| & les nombres \verb|int1| et \verb|int2| sont
+                         égaux\\
+  \verb|int1 -gt int2| & \verb|int1| $>$ \verb|int2|\\
+  \verb|int1 -lt int2| & \verb|int1| $<$ \verb|int2|\\
+  \verb|-d fichier| & \verb|fichier| existe et est un répertoire\\
+  \verb|-e fichier| & \verb|fichier| existe \\
+  \verb|-s fichier| & \verb|fichier| existe et n'est pas vide (taille
+                      $>0$) \\
+  \verb|-r fichier| & \verb|fichier| existe et est accessible en
+                      lecture\\ 
+  \verb|-w fichier| & \verb|fichier| existe et est accessible en
+                      écriture \\
+  \verb|-x fichier| & \verb|fichier| existe et est accessible en
+                      exécution \\
+  \bottomrule
+  \caption{tests\label{tab:tests}}
+\end{xltabular}
 
+\paragraph{test}
+À l'intérieur du script \verb|bash|, les crochets renvoient en fait à
+une commande par ailleurs disponible: \verb|test|. La commande
+\verb|test| renvoie en fait la sortie \verb|0| si le résultat est
+\emph{vrai} et \verb|1| si le résultat est faux. Le terminal ne
+retourne pas le resultat, mais celui-ci est associé à une variable
+\verb|$?| que l'on peut afficher par la commande:
+\mintinline{bash}|echo $?|. En voici quelques exemples:
+\begin{minted}[linenos]{text}
+[robert@kiddo courses]$ ls
+bibliography.bib  makefile           _preamble-ed.tex  _preamble.tex  README.tex
+fichiers          _preamble_bbl.tex  _preamble.log     README.md
+[robert@kiddo courses]$ test -d fichiers
+[robert@kiddo courses]$ echo $?
+0
+[robert@kiddo courses]$ test -x makefile
+[robert@kiddo courses]$ echo $?
+1
+[robert@kiddo courses]$ test -e makefile
+[robert@kiddo courses]$ echo $?
+0
+[robert@kiddo courses]$ test 0123 = 123
+[robert@kiddo courses]$ echo $?
+1
+[robert@kiddo courses]$ test 0123 -eq 123
+[robert@kiddo courses]$ echo $?
+0
+\end{minted}
+\begin{quoting}
+  \textbf{Commentaire ---} Cet exemple montre quelle est la différence
+  entre le test $=$ pour qui il faut une stricte équivalence dans les
+  chaînes de caractères, et le test \verb|-eq| qui est un test
+  arithmétique.
+\end{quoting}
 
 \hfill\verb|../..| à suivre
 
-- 
cgit v1.2.3

