Newer
Older
cours-unix-shell / output / shell / parametres.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="paramètres---shell---unix">Paramètres - Shell - UNIX</h1>
        <h2 id="récupération-des-paramètres-de-la-ligne-de-commande">Récupération des paramètres de la ligne de commande</h2>
        <table>
        <tbody>
        <tr class="odd">
        <td><code>$0</code></td>
        <td>nom de la commande</td>
        </tr>
        <tr class="even">
        <td><code>$n</code></td>
        <td>valeur du n<sup>ième</sup> paramètre</td>
        </tr>
        <tr class="odd">
        <td><code>$#</code></td>
        <td>nombre de paramètres</td>
        </tr>
        <tr class="even">
        <td><code>$*</code></td>
        <td>liste de tous les paramètres</td>
        </tr>
        </tbody>
        </table>
        <p>Pour la ligne de commande <code>sh test.sh a b c</code>, <code>$0</code> vaut <code>test.sh</code>, <code>$#</code> vaut <code>3</code>, <code>$*</code> vaut <code>a b c</code>, et <code>$2</code> vaut <code>b</code> (à l'intérieur du script).</p>
        <p>La commande <code>shift</code> décale les paramètres (en perdant le premier) : le deuxième paramètre devient le premier, le troisième devient le deuxième, etc. (c'est utile quand on utilise une boucle pour traiter les paramètres).</p>
        <h2 id="variables-spéciales">Variables spéciales</h2>
        <table>
        <tbody>
        <tr class="odd">
        <td><code>$$</code></td>
        <td>numéro de processus de la dernière commande</td>
        </tr>
        <tr class="even">
        <td><code>$?</code></td>
        <td>statut de la dernière commande (<code>0</code> = tout s'est bien passé)</td>
        </tr>
        </tbody>
        </table>
        <h2 id="caractères-spéciaux">Caractères spéciaux</h2>
        <p>Comme à chaque fois qu'on a un caractère spécial (par exemple <code>$</code>), on a des caractères d'échappement.</p>
        <table>
        <colgroup>
        <col style="width: 12%" />
        <col style="width: 44%" />
        <col style="width: 15%" />
        <col style="width: 27%" />
        </colgroup>
        <tbody>
        <tr class="odd">
        <td><code>\</code></td>
        <td>banalise le caractère suivant</td>
        <td><code>echo \$0 $0</code></td>
        <td><code>$0 /usr/bin/ksh</code></td>
        </tr>
        <tr class="even">
        <td><code>&quot; ... &quot;</code></td>
        <td>banalise les caractères sauf <code>\</code>, <code>$</code> et <code>`</code></td>
        <td><code>echo &quot;\$0 $0&quot;</code></td>
        <td><code>$0 /usr/bin/ksh</code></td>
        </tr>
        <tr class="odd">
        <td><code>' ... '</code></td>
        <td>banalise tous les caractères</td>
        <td><code>echo '\$0 $0'</code></td>
        <td><code>\$0 $0</code></td>
        </tr>
        <tr class="even">
        <td><code>` ... `</code></td>
        <td>substitution de commande</td>
        <td><code>echo `date`</code></td>
        <td><code>Mon May 5 16:54:14 MEST 2003</code></td>
        </tr>
        </tbody>
        </table>
        <blockquote>
        <p>💡 En 2023, il est conseillé d'utiliser <code>$(commande)</code> pour la substitution de commande.<br />
        L'exemple devient ainsi <code>echo $(date)</code>.</p>
        </blockquote>
        <p><a href="./scripts.html">Précédent</a> - <a href="conditions.html">Suivant</a></p>
    </div>

    <footer>
        <p>&copy; CNRS 2023</p>
    </footer>
</body>

</html>