Newer
Older
cours-unix-shell / output / shell / conditions.html
<!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">&quot;Le fichier </span><span class="dt">\&quot;</span><span class="va">$1</span><span class="dt">\&quot;</span><span class="st"> n&#39;existe pas&quot;</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 &quot;régulier&quot; (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>&copy; CNRS 2023</p>
    </footer>
</body>

</html>