<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1></h1>
<nav>
<ul>
<li><a href="/output/README.html">Accueil</a></li>
<li><a href="/output/unix/README.html">UNIX</a></li>
<li><a href="/output/bases/README.html">Bases</a></li>
<li><a href="/output/commandes/README.html">Commandes</a></li>
<li><a href="/output/shell/README.html">Shell</a></li>
<li><a href="/output/sed/README.html">Sed</a></li>
<li><a href="/output/make/README.html">Make</a></li>
</ul>
</nav>
</header>
<div class="content">
<h1 id="conditions---shell---unix">Conditions - Shell - UNIX</h1>
<p>Les commandes <code>if</code>, <code>while</code>, et <code>until</code> testent le statut de la commande qu'ils ont en paramètre.</p>
<h2 id="if">if</h2>
<h3 id="syntaxe">Syntaxe</h3>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">if</span> <span class="ex">commande</span>
<span class="kw">then</span>
<span class="ex">liste_commandes</span>
[<span class="ex">elif</span> commande
<span class="kw">then</span>
<span class="ex">liste_commandes</span>] ...
[<span class="ex">else</span> liste_commandes]
<span class="kw">fi</span></code></pre></div>
<h3 id="exemples">Exemples</h3>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash"><span class="kw">if</span> <span class="bu">test</span> -f <span class="va">$1</span>
<span class="kw">then</span>
<span class="fu">cat</span> <span class="va">$1</span>
<span class="kw">else</span>
<span class="bu">echo</span> <span class="st">"Le fichier </span><span class="dt">\"</span><span class="va">$1</span><span class="dt">\"</span><span class="st"> n'existe pas"</span>
<span class="kw">fi</span></code></pre></div>
<h2 id="test">test</h2>
<p><code>test</code> est une commande qui renvoie une valeur vraie ou fausse (<code>0</code> pour vrai, <code>1</code> pour fausse).<br />
Elle a différentes options permettant de tester différentes conditions sur des fichiers, des valeurs (chaînes de caractères), etc.</p>
<p>Sa syntaxe est <code>test expr</code> ou <code>[ expr ]</code> (attention, il faut un espace après <code>[</code> et avant <code>]</code>).</p>
<table style="width:100%;">
<colgroup>
<col style="width: 17%" />
<col style="width: 82%" />
</colgroup>
<thead>
<tr class="header">
<th>expr</th>
<th>signification</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>-r fichier</code></td>
<td>vrai si le <code>fichier</code> existe et est accessible en lecture (r)</td>
</tr>
<tr class="even">
<td><code>-w fichier</code></td>
<td>vrai si le <code>fichier</code> existe et est accessible en écriture (w)</td>
</tr>
<tr class="odd">
<td><code>-x fichier</code></td>
<td>vrai si le <code>fichier</code> existe et est exécutable (x)</td>
</tr>
<tr class="even">
<td><code>-f fichier</code></td>
<td>vrai si le <code>fichier</code> existe et est un fichier "régulier" (file)</td>
</tr>
<tr class="odd">
<td><code>-d fichier</code></td>
<td>vrai si le <code>fichier</code> existe et est un répertoire (directory)</td>
</tr>
<tr class="even">
<td><code>-s fichier</code></td>
<td>vrai si le <code>fichier</code> existe et a une taille non nulle (size)</td>
</tr>
<tr class="odd">
<td><code>c1 = c2</code></td>
<td>vrai si les deux expressions sont égales (des chaînes, en sh)</td>
</tr>
<tr class="even">
<td><code>c1 != c2</code></td>
<td>vrai si les deux expressions sont différentes (des chaînes, en sh)</td>
</tr>
<tr class="odd">
<td><code>c1</code></td>
<td>vrai si <code>c1</code> n'est pas la chaîne nulle (vide)</td>
</tr>
<tr class="even">
<td><code>e1 -eq e2</code></td>
<td>vrai si les deux entiers <code>e1</code> et <code>e2</code> sont algébriquement égaux (equal)</td>
</tr>
<tr class="odd">
<td><code>e1 -ne e2</code></td>
<td>vrai si les deux entiers <code>e1</code> et <code>e2</code> sont algébriquement différents (not equal)</td>
</tr>
<tr class="even">
<td><code>e1 -gt e2</code></td>
<td>vrai si l'entier <code>e1</code> est plus grand que l'entier <code>e2</code> (greater than)</td>
</tr>
<tr class="odd">
<td><code>e1 -lt e2</code></td>
<td>vrai si l'entier <code>e1</code> est plus petit que <code>e2</code> (lower than)</td>
</tr>
<tr class="even">
<td><code>! expr</code></td>
<td>négation de l'expression booléenne <code>expr</code></td>
</tr>
<tr class="odd">
<td><code>expr1 -a expr2</code></td>
<td>et logique entre les deux expressions booléennes <code>expr1</code> et <code>expr2</code> (and)</td>
</tr>
<tr class="even">
<td><code>expr1 -o expr2</code></td>
<td>ou logique entre les deux expressions booléennes <code>expr1</code> et <code>expr2</code> (or)</td>
</tr>
</tbody>
</table>
<h3 id="exemples-1">Exemples</h3>
<p>Quand <code>script.sh</code> est un fichier qui existe dans le répertoire courant.</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">test</span> -f script.sh
$ <span class="bu">echo</span> <span class="va">$?</span>
<span class="ex">0</span></code></pre></div>
<p>Quand <code>inexistant.sh</code> est un fichier qui n'est pas dans le répertoire courant.</p>
<div class="sourceCode"><pre class="sourceCode bash"><code class="sourceCode bash">$ <span class="bu">test</span> -f inexistant.sh
$ <span class="bu">echo</span> <span class="va">$?</span>
<span class="ex">1</span></code></pre></div>
<p><a href="./parametres.html">Précédent</a> - <a href="./controle.html">Suivant</a></p>
</div>
<footer>
<p>© CNRS 2023</p>
</footer>
</body>
</html>