<!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>" ... "</code></td>
<td>banalise les caractères sauf <code>\</code>, <code>$</code> et <code>`</code></td>
<td><code>echo "\$0 $0"</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>© CNRS 2023</p>
</footer>
</body>
</html>