Unverified Commit 3328cffb authored by Rémy Huet's avatar Rémy Huet 💻
Browse files

Merge derniereminute into master

parents eafea152 1c6f0723
Pipeline #33876 passed with stages
in 1 minute and 1 second
24 janvier 2019
Rémy Huet (remy.huet@etu.utc.fr), Association Picasoft (picasoft@assos.utc.fr)
Rémy Huet (remy.huet@etu.utc.fr), Quentin Duchemin (quentinduchemin@tuta.io), Association
Picasoft (picasoft@assos.utc.fr)
La présentation et tous les fichiers qui composent ce dépôt sont sous licence
Creative Commons 4.0 Attribution - Partage dans les Mêmes Conditions 4.0
......
......@@ -14,8 +14,9 @@
\usepackage[]{ulem}
\usepackage{xcolor}
\usepackage{tikz}
\usepackage{upquote}
\hypersetup{
pdfauthor={Rémy Huet},
pdfauthor={Rémy Huet, Quentin Duchemin},
pdftitle={Api/casoft Init - Jour 3 partie 1 : Scripts shell}
pdfsubject={Formation shell},
pdfkeywords={scipts, linux, GNU/Linux, shell, posix},
......@@ -38,10 +39,10 @@ pdfproducer={Latex},
{}
}
\title[Api/casoft Init - Shell]{Api/casoft Init - Jour 3 partie 1 - scripts shell}
\title[Api/casoft Init - Shell]{Api/casoft Init - Jour 3 (matin) - Scripts shell}
\titlegraphic{\includegraphics[width=5em]{./imgs/picasoft_logo.png}\\ \href{https://creativecommons.org/licenses/by-sa/4.0/deed.fr}{\includegraphics[width=4em]{./imgs/licence.eps}}}
\author[R. Huet]{%
\phantom{x}\hfill Rémy {\sc Huet} \hfill\phantom{x}}
\author[R. Huet, Q. Duchemin]{%
\phantom{x}\hfill Rémy {\sc Huet} \hfill Quentin {\sc Duchemin} \hfill\phantom{x}}
\institute[Picasoft]{Association Picasoft}
\date[24/01/2019]{Mercredi 23 janvier 2018}
......
......@@ -17,17 +17,17 @@
\item Statique (le nombre d'exécutions est fixé et ne peut pas dépendre de paramètres extérieurs)
\end{itemize}
C'est pourquoi on utilise des \textbf{boucles}
C'est pourquoi on utilise des \textbf{boucles}.
\end{block}
\end{frame}
\begin{frame}{Les boucles en théorie}
\begin{block}{Définition}
Une boucle est une structure permettant de réaliser de manière répétée une action.
Une boucle est une structure permettant de répéter un ensemble d'instructions.
Elle est composée:
\begin{itemize}
\item D'un corps: c'est l'ensemble des instructions qui seront exécutées lors d'un passage dans la boucle.
\item D'une condition de réalisation: si celle-ci est vraie, un passage est effectué
\item D'une condition de réalisation: si celle-ci est vraie, une \textbf{itération} est effectuée.
\end{itemize}
\end{block}
\begin{alertblock}{N.B.}
......@@ -38,11 +38,11 @@
\end{alertblock}
\end{frame}
\subsection{La boucle tant que \ldots faire}
\subsection{La boucle tant que~\ldots faire}
\begin{frame}[fragile]{En théorie}
\begin{block}{Explications}
Elle est composée d'une condition \enquote{simple} \textit{comme celle des if} et d'un corps.
Elle est composée d'une condition et d'un corps.
Elle est de la forme :
\end{block}
\begin{Verbatim}
......@@ -57,11 +57,11 @@
\begin{block}{Concrètement}
Son fonctionnement est assez simple.
Tant que la condition est vérifiée, la boucle boucle.
Tant que la condition est vérifiée, la boucle s'exécute.
\end{block}
\end{frame}
\begin{frame}[fragile]{Et en bash?}
\begin{frame}[fragile]{Et en Bash?}
En bash, la syntaxe de cette boucle est la suivante :
\begin{Verbatim}
{\large while [ condition ]}
......@@ -78,16 +78,16 @@
\begin{Verbatim}
#!/bin/bash
while [ -z $reponse ] || [ $reponse != 'oui' ]\textcolor{red}{# ou juste [ ``$reponse'' != oui ]}
while [ -z $reponse ] || [ "$reponse" != 'oui' ]\textcolor{red}{ # ou juste [ "$reponse" != oui ]}
do
read -p 'Dites oui : ' reponse
read -p "Dites oui : " reponse
done
\end{Verbatim}
\end{beamercolorbox}
\begin{block}{}
Ce script demandera à l'utilisateur d'entrer du texte tant que l'utilisateur n'enverra pas \enquote{oui}
Ce script demandera à l'utilisateur d'entrer du texte tant que l'utilisateur n'enverra pas \enquote{oui}.
On notera que comme pour les if, on peut utiliser les opérateurs arithmétiques
On notera que comme pour les if, on peut utiliser les opérateurs logiques.
\end{block}
\end{frame}
......@@ -128,14 +128,15 @@ done
\begin{Verbatim}
#!/bin/bash
while [ "$reponse" != 'oui' ]
for file in *
do
read -p 'Dites oui : ' reponse
cat $file
done
\end{Verbatim}
\end{beamercolorbox}
\begin{block}{}
Ce script demandera une entrée à l'utilisateur tant que ça ne sera pas \enquote{oui}
Ce script affichera l'ensemble des fichiers du répertoire d'exécution du script. Notez que le joker \texttt{*}, comme dans le terminal, capture le contenu du répertoire courant.
\end{block}
\end{frame}
......@@ -143,10 +144,10 @@ done
\begin{alertblock}{Exercice: les années bissextiles}
Écrire un script qui:
\begin{itemize}
\item Demande deux années à l'utilisateur : celle de départ ou celle d'arrivée. Elles pourront être fournies en paramètre (dans cet ordre). La ou les valeurs manquantes seront demandées par le prompt lors de l'exécution du programme.
\item Demande deux années à l'utilisateur : celle de départ ou celle d'arrivée. Elles pourront être fournies en paramètres (dans cet ordre). La ou les valeurs manquantes seront demandées par le prompt lors de l'exécution du programme le cas échéant.
\item Affiche toutes les années bissextiles comprises entre celles données (incluses)
\end{itemize}
On utilisera uniquement des boucles \texttt{for} et pas de boucle \texttt{while}
On utilisera uniquement des boucles \texttt{for} (pas de boucle \texttt{while}) !
\end{alertblock}
\begin{exampleblock}{Rappel}
Une année est bissextile si elle est un multiple de 4. Exception : elle ne l'est pas si elle est un multiple de 100. Exception à l'exception : elle l'est si elle est un multiple de 400.
......@@ -156,13 +157,15 @@ done
\begin{frame}[fragile]{Indices}
\begin{block}{Indices}
\begin{itemize}
\item Pour générer les valeurs pour la boucle \texttt{for}, allez voir du côté de \sout{chez Swann} \texttt{seq}
\item La commande \texttt{let} ne renvoie pas directement la valeur du calcul. On utilisera une autre syntaxe pour faire les calculs dans les if: \texttt{\$((calcul))}
\item Pour générer les valeurs pour la boucle \texttt{for}, allez voir du côté de \sout{chez Swann} \texttt{seq}.
\item La commande \texttt{let} ne renvoie pas directement la valeur du calcul. On utilisera une autre syntaxe pour faire les calculs dans les if: \texttt{\$((calcul))}.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}[fragile]{Solution}
Proposition de solution:
Proposition de solution :
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
#!/bin/bash \Pause
......@@ -172,19 +175,19 @@ arrivee=$2 \Pause
if [ -z $2 ] \Pause
then \Pause
if [ -z $1 ] \Pause
then \Pause
read -p 'Année de départ ? ' depart \Pause
fi \Pause
read -p "Année d'arrivée ? " arrivee \Pause
if [ -z $1 ] \Pause
then \Pause
read -p "Année de départ ? " depart \Pause
fi \Pause
read -p "Année d'arrivée ? " arrivee \Pause
fi \Pause
for annee in `seq $depart $arrivee` \Pause
do \Pause
if [ $(($annee % 4)) -eq 0 ] && [ $(($annee % 100)) -ne 0 ] || [ $(($annee % 400)) -eq 0 ] \Pause
then \Pause
echo $annee \Pause
fi \Pause
if [ $(($annee % 4)) -eq 0 ] && [ $(($annee % 100)) -ne 0 ] || [ $(($annee % 400)) -eq 0 ] \Pause
then \Pause
echo $annee \Pause
fi \Pause
done
\end{Verbatim}
\end{beamercolorbox}
......@@ -195,17 +198,19 @@ done
Tout à l'heure, on a vu que les paramètres n'étaient accessibles que via 9 variables.
Mais il est bien possible d'avoir plus de 9 paramètres sur un script.
On utilisera alors la commande \texttt{shift} pour \enquote{décaler} les paramètres.
(\verb+$2 -> $1, $3 -> $2 ... [...] -> $9+)
(\verb+$2 $1, $3 $2 [...] $9+).
\end{block}
Exemple : écrire un script qui liste tous les paramètres avec leur place: \Pause
Exemple : écrire un script qui liste tous les paramètres avec leur place : \Pause
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
#!/bin/bash
for i in `seq 1 $#`
do
echo "Le paramètre $i vaut $1"
shift
echo "Le paramètre $i vaut $1"
shift
done
\end{Verbatim}
\end{beamercolorbox}
......
......@@ -2,7 +2,7 @@
\begin{frame}[fragile]{Introduction}
\begin{block}{Définition}
On appelle {\bf condition} ou {\bf structure conditionnelle} une zone de code qui n'est pas toujours exécutée, mais l'est uniquement dans certains cas
On appelle {\bf condition} ou {\bf structure conditionnelle} un morceau de code qui est exécuté uniquement dans certains cas.
\end{block}
En algorithmique, on les voit souvent sous la forme :
\medskip
......@@ -17,12 +17,12 @@
\end{Verbatim}
\begin{alertblock}{}
Dans tous les cas, on retrouvera {\bf toujours} une ou plusieurs conditions et une ou plusieurs actions à effectuer.
On retrouvera {\bf toujours} une ou plusieurs conditions et une ou plusieurs actions à effectuer.
\end{alertblock}
\end{frame}
\begin{frame}[fragile]{Et en bash ?}
En bash, la structure à utiliser est la suivante :
\begin{frame}[fragile]{Et en Bash ?}
En Bash, la structure à utiliser est la suivante :
\medskip
\begin{Verbatim}
{\large if [ condition ]}
......@@ -44,10 +44,10 @@
\end{block}
\end{frame}
\begin{frame}[fragile]{Si \ldots sinon \ldots}
\begin{frame}[fragile]{Si~\ldots sinon~\ldots}
\begin{block}{Contexte}
La structure précédente permet de réaliser des actions si une condition est réalisée.
On rencontre souvent une autre structure, qui dit aussi quoi faire si la condition n'est pas réalisée :
La structure précédente permet de réaliser des actions si une condition est évaluée à \textbf{vrai}.
On rencontre souvent une autre structure, qui dit aussi quoi faire si la condition est évaluée à \textbf{faux} :
\end{block}
\begin{Verbatim}
......@@ -65,9 +65,9 @@
\end{Verbatim}
\end{frame}
\begin{frame}[fragile]{En bash \ldots}
\begin{frame}[fragile]{En Bash~\ldots}
\begin{block}{}
En bash, on utilise la même syntaxe, et on utilise \enquote{else} comme mot clé pour le \enquote{sinon}
En Bash, on utilise la même syntaxe, et on utilise \enquote{\texttt{else}} comme mot clé pour le \enquote{sinon}.
\end{block}
\medskip
\begin{Verbatim}
......@@ -112,11 +112,11 @@
\end{Verbatim}
\begin{alertblock}{}
N.B: On peut mettre autant de \enquote{SINON SI \ldots ALORS \ldots} que l'on veut
On peut mettre autant de \enquote{SINON SI \ldots ALORS \ldots} que l'on veut !
\end{alertblock}
\end{frame}
\begin{frame}[fragile]{En bash}
\begin{frame}[fragile]{En Bash}
\begin{block}{}
En bash, \enquote{SINON SI} s'écrit \texttt{elif} (contraction de \texttt{else} et \texttt{if}) :
\end{block}
......@@ -152,13 +152,13 @@
\hline
\textbf{Test et syntaxe} & \textbf{Explications} \\
\hline\hline
\verb+"$chaine1" == "$chaine2"+ & Test d'égalité entre \verb+$chaine1+ et \verb+$chaine2+ \\
\verb+"$chaine1" == "$chaine2"+ & Teste si \verb+$chaine1+ et \verb+$chaine2+ sont \textbf{égaux}\\
\hline
\verb+"$chaine1" != "$chaine2"+ & Test si \verb+$chaine1+ et \verb+$chaine2+ sont différents \\
\verb+"$chaine1" != "$chaine2"+ & Teste si \verb+$chaine1+ et \verb+$chaine2+ sont \textbf{différents} \\
\hline
\verb+-z $chaine+ & Teste si la la variable \verb+$chaine+ est vide \\
\verb+-z $chaine+ & Teste si la la variable \verb+$chaine+ est \textbf{vide} \\
\hline
\verb+-n $chaine+ & Teste si la variable \verb+$chaine+ est non vide \\
\verb+-n $chaine+ & Teste si la variable \verb+$chaine+ est \textbf{non vide} \\
\hline
\end{tabularx}
\caption{Les tests sur les chaînes de caractères}
......@@ -167,31 +167,35 @@
\end{frame}
\begin{frame}[fragile]{Chaînes de caractères}{Exemples}
Dans \verb+script.sh+ :
Dans \verb+script.sh+, on écrit :
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
#!/bin/bash
if [ "$1" == "mot_de_passe" ]
then
echo 'Bienvenue'
echo 'Bienvenue'
elif [ "$1" == "password" ]
then
echo 'Welcome !'
echo 'Welcome !'
else
echo 'Dégage !'
echo 'Dégage !'
fi
if [ -z $2 ]
then
echo "Il n'y a pas de second argument"
echo "Il n'y a pas de second argument"
fi
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\begin{frame}[fragile]
On exécute :
L'exécution du script donne :
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
remy@hp-remy:~/scripts$ ./script.sh \Pause
......@@ -204,15 +208,17 @@ remy@hp-remy:~/scripts$ ./script.sh password toto \Pause
Welcome !
\end{Verbatim}
\end{beamercolorbox}
\medskip
\begin{alertblock}{}
\begin{itemize}
\item Il est important de mettre des double quotes autour des variables lors des tests fait avec \texttt{==} ou \texttt{!=}, sinon bash sort une erreur.
\item On peut éventuellement faire le test d'égalité avec un seul signe \texttt{=}
\item C'est une bonne pratique de mettre des double quotes autour des variables lors des tests, avec \texttt{==} ou \texttt{!=}, en particulier si la valeur de la variable contient des espaces !
\item On peut éventuellement faire le test d'égalité avec un seul signe \texttt{=}.
\end{itemize}
\end{alertblock}
\end{frame}
\begin{frame}[fragile]{Nombres}{Les différents test}
\begin{frame}[fragile]{Nombres}{Les différents tests}
\begin{table}
\centering
\begin{tabular}{|c|c|}
......@@ -232,13 +238,15 @@ Welcome !
\verb+$a -ge $b+ & \verb+$a+ supérieur ou égal à \verb+$b+ \\
\hline
\end{tabular}
\caption{Les comparaisons sur des nombres}
\caption{Comparaisons sur les nombres en Bash}
\label{tab:comp_nombres}
\end{table}
\end{frame}
\begin{frame}[fragile]{Nombres}{Exemple}
Dans le fichier \texttt{script.sh}
Dans le fichier \texttt{script.sh}, on écrit :
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
#!/bin/bash
......@@ -247,23 +255,25 @@ read -p 'Quel est ton age ? ' age
if [ $age -lt 18 ]
then
echo 'Tu es mineur'
echo 'Tu es mineur'
fi
if [ $age -ge 18 ]
then
echo 'Tu es majeur'
if [ $age -eq 18 ]
then
echo 'De peu !'
fi
echo 'Tu es majeur'
if [ $age -eq 18 ]
then
echo 'De peu !'
fi
fi
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\begin{frame}[fragile]
On exécute:
On exécute le script :
\medskip
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
remy@hp-remy:~/scripts$ ./script.sh \Pause
......@@ -280,6 +290,8 @@ Tu es majeur
De peu !
\end{Verbatim}
\end{beamercolorbox}
\medskip
\begin{alertblock}{}
On note bien que \texttt{-lt} a vérifié que l'âge était \textbf{strictement} inférieur tandis que \texttt{-ge} a vérifié qu'il était supérieur ou égal.
\end{alertblock}
......@@ -292,7 +304,7 @@ De peu !
\hline
\textbf{Test et syntaxe} & \textbf{Explications} \\
\hline\hline
\verb+-e $nom+ & Le fichier de nom \verb+$nom+ existe \\
\verb+-e $nom+ & Le fichier (ou répertoire) \verb+$nom+ existe \\
\hline
\verb+-d $nom+ & \verb+$nom+ est un répertoire \\
\hline
......@@ -311,7 +323,7 @@ De peu !
\verb+$f1 -ot $f2+ & \verb+$f1+ est plus vieux que \verb+$f2+ \\
\hline
\end{tabular}
\caption{Les commandes pour les fichiers}
\caption{Tests sur les fichiers en Bash}
\label{tab:comp_fichiers}
\end{table}
\end{frame}
......@@ -324,26 +336,26 @@ De peu !
mkdir -p dossier
if [ -d dossier ]
then
echo 'dossier est un répertoire'
touch dossier/test.sh
if [ -w dossier/test.sh ]
then
if [ -x dossier/test.sh ]
then
echo Fichier executable
else
echo 'rendre le fichier executable ...'
chmod a+x dossier/test.sh
echo 'Écrire dans test.sh'
echo '#/bin/bash' > dossier/test.sh
echo 'ls /' >> dossier/test.sh
fi
fi
echo 'Exécuter dossier/test.sh'
./dossier/test.sh
echo 'dossier est un répertoire'
touch dossier/test.sh
if [ -w dossier/test.sh ]
then
if [ -x dossier/test.sh ]
then
echo Fichier executable
else
echo 'rendre le fichier executable ...'
chmod a+x dossier/test.sh
echo 'Écrire dans test.sh'
echo '#/bin/bash' > dossier/test.sh
echo 'ls /' >> dossier/test.sh
fi
fi
echo 'Exécuter dossier/test.sh'
./dossier/test.sh
else
echo 'Erreur'
exit 1
echo 'Erreur'
exit 1
fi
\end{Verbatim}
\end{beamercolorbox}
......@@ -367,20 +379,19 @@ opt proc root run sbin srv sys tmp usr var vmlinuz
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
if [ -w dossier/test.sh ]
then
if [ -x dossier/test.sh ]
then
echo Fichier executable
else
echo 'rendre le fichier executable ...'
chmod a+x dossier/test.sh
[\ldots]
fi
fi
then
if [ -x dossier/test.sh ]
then
echo Fichier executable
else
echo 'rendre le fichier executable ...'
chmod a+x dossier/test.sh
[\ldots]
fi
\end{Verbatim}
\end{beamercolorbox}\Pause{}
\end{beamercolorbox}\Pause
\begin{block}{}
On est obligés d'imbriquer les \texttt{if}? On pourrait pas inverser les tests pour éviter les \texttt{else} quand c'est justement le seul cas que l'on veut gérer ?
Est-on obligé d'imbriquer les \texttt{if}? Ne pourrait-on pas inverser les tests pour éviter les \texttt{else} quand c'est justement le seul cas que l'on veut gérer ?
\end{block}
\end{frame}
......@@ -388,7 +399,7 @@ if [ -w dossier/test.sh ]
\begin{frame}[fragile]{Les opérateurs logiques}
\begin{block}{Contexte}
Les tests que nous utilisons depuis tout à l'heure renvoient des valeurs logiques (vrai ou faux). Sur ces valeurs, on peut utiliser des {\bf opérateurs logiques}
Les tests que nous utilisons depuis tout à l'heure renvoient des valeurs logiques (vrai ou faux). Sur ces valeurs, on peut utiliser des {\bf opérateurs logiques}.
\end{block}
\begin{table}
\centering
......@@ -396,18 +407,18 @@ if [ -w dossier/test.sh ]
\hline
\textbf{Opérateur} & \textbf{Signification} & \textbf{Vrai si \ldots} \\
\hline\hline
\verb+&&+ & ET & Vrai si les deux conditions sont vérifiées \\
\verb+&&+ & ET & Les deux conditions sont vérifiées \\
\hline
\verb+||+ & OU & Vrai si une des conditions est vérifiée \\
\verb+||+ & OU & Une des conditions est vérifiée \\
\hline
\verb+!+ & NON & Vrai si la condition est fausse \\
\verb+!+ & NON & La condition est fausse \\
\hline
\end{tabular}
\caption{Les opérateurs logiques}
\label{tab:operateurs_logiques}
\end{table}
\begin{exampleblock}{}
Pour utiliser ces opérateurs, on écrira [ !~condition~] pour non ou [~condition1~] <opérateur> [~condition2~] pour les autres.
Pour utiliser ces opérateurs, on écrira [ !~condition~] pour NON ou [~condition1~] <opérateur> [~condition2~] pour les autres.
\end{exampleblock}
\end{frame}
......@@ -422,17 +433,17 @@ age2=19
if [ $age1 -ge 18 ] && [ $age2 -ge 18 ]
then
echo Les deux sont majeurs
echo "Les deux sont majeurs"
fi
if [ $age1 -lt 18 ] || [ $age2 -lt 18 ]
then
echo Un des deux ne l\'est pas
echo "Un des deux n'est pas majeur"
fi
if [ ! $age1 -lt 17 ]
then
echo 'Age1 >= 17'
echo "age1 >= 17"
fi
\end{Verbatim}
\end{beamercolorbox}
......@@ -440,8 +451,8 @@ fi
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\begin{Verbatim}
remy@hp-remy:~/scripts$ ./script.sh \Pause
Un des deux ne l'est pas
Age1 >= 17
Un des deux n'est pas majeur
age1 >= 17
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
......@@ -459,18 +470,18 @@ Age1 >= 17
\begin{Verbatim}
#!/bin/bash
case $extension_ficher in
'.sh')
echo ``C'est un script \!''
;;
'.tex')
echo ``C'est un fichier LaTeX \!''
;;
'.doc' | '.xls' | '.ppt')
echo 'Houste !!!'
;;
*)
echo 'Je connais pas !'
;;
'.sh')
echo ``C'est un script \!''
;;
'.tex')
echo ``C'est un fichier LaTeX \!''
;;
'.doc' | '.xls' | '.ppt')
echo 'Ouste !!!'
;;
*)
echo 'Je ne connais pas !'
;;
esac
\end{Verbatim}
\end{beamercolorbox}
......@@ -486,15 +497,15 @@ case $exension_fichier in
\end{beamercolorbox}
\begin{block}{}
On teste la valeur de la variable \verb+$extension_ficher+ (que l'on suppose exister)
On teste la valeur de la variable \verb+$extension_ficher+ (que l'on suppose exister).
\end{block} \Pause
\begin{beamercolorbox}[rounded=true, shadow=true]{terminal}
\vspace{-10pt}
\begin{Verbatim}
'.sh')
echo ``C'est un script \!''
;;
echo ``C'est un script \!''
;;
\end{Verbatim}
\vspace{-5pt}
\end{beamercolorbox}
......@@ -516,7 +527,7 @@ case $exension_fichier in
\begin{block}{}
On peut effectuer la même action pour plusieurs valeurs.
\textbf{Attention} le \enquote{ou} s'écrit alors avec un seul \texttt{|}
\textbf{Attention} le \enquote{ou} s'écrit alors avec un seul \texttt{|}.
\end{block}
\end{frame}
......@@ -532,7 +543,7 @@ case $exension_fichier in
\end{beamercolorbox}
\begin{block}{}
\enquote{\texttt{*}} est une \enquote{wildcard}. Tout correspond. Ici, tout ce qui n'est pas passé par une autre condition passe ici. C'est l'équivalent du \enquote{\texttt{else}}.
\enquote{\texttt{*}} est un \enquote{wildcard}, ou joker. Il capture toutes les possibilités. Ici, tout ce qui n'est pas passé par une autre condition rentre dans ce cas. C'est l'équivalent du \enquote{\texttt{else}}.