Shell
Les types de shell les plus répandus :
- sh : Bourne Shell. L'ancêtre de tous les shells.
- bash : Bourne Again Shell. Une amélioration du Bourne Shell, disponible par défaut sous Linux et Mac OS X.
- ksh : Korn Shell. Un shell puissant assez présent sur les Unix propriétaires, mais aussi disponible en version libre, compatible avec bash.
- csh : C Shell. Un shell utilisant une syntaxe proche du langage C.
- tcsh : Tenex C Shell. Amélioration du C Shell.
-
zsh : Z Shell. Shell assez récent reprenant les meilleures idées de bash, ksh et tcsh.
-
#!/bin/bashindique quel shell utiliser (ligne indispensable). # commentaireajouter des commentaires./*commentaire*/commentaire sur plusieurs lignes.
Créer & Exécuter un script¶
chmod +x scriptdonner les droits d'éxcution../scriptexécuter un script.bash -x sccriptafficher les détails de l'exécution.
Pour appeler un script depuis n'importe ou : déplacer le script dans un dossier "PATH". Pour afficher la liste de ces dossiers : echo $PATH
Variable type texte¶
¡Attention le Bash est trés pointieux sur les accents, espaces,...etc.!
variable='texte'déclarer une variable de type texte.-
echo $variableafficher ou appeler une variable, renvoie les paramètres qu'elle reçoit. Paramètres:eactiver les retours à la ligne\n.n nombrecoupe le message au bout d'un nombre de lettres.t nombrelimiter le temps de la saisie (en seconde).sne pas afficher le texte saisi.
Types de quotes:
| Symbole | Action |
|---|---|
'' |
(apostrophes) affiche ce qui est contenu tel quel |
"" |
(guillemets) analyse et exécute le contenu reconnu |
'' |
(back quotes) demande à bash d'exécuter ce qui se trouve à l'intérieur |
-
read variable variable2demander une saisie et la stock (NB : stock un mot par variable jusqu'a la dernière qui va garder le reste). Paramètres :p texte variableafficher un message pour l'utilisateur.
-
${#variable}afficher la longueur d'une variable.
Variable type nombre¶
Warning
bash ne gére pas les nombres, il faut donc utiliser la commande "let" pour les nombres entiers et "bc" pour les nombres décimaux! C'est let "variable = valeur" qui permet affecter à une variable un nombre.
| Operateur | Défintion |
|---|---|
+ |
addition |
- |
soustraction |
* |
multiplication |
/ |
division |
** |
puissance |
%. |
modulo |
Les variables d'environnement¶
envafficher toutes les variables d'environnement que vous avez actuellement en mémoire.exportPour définir sa propre variable ( approfondir ).
Variables paramètres¶
Elles sont automatiquement créées
Elles se nomment:
| Paramétre | valeur |
|---|---|
$# |
Nombre de paramètres |
$0 |
Nom du script exécuté |
$1 |
premier paramètre |
| ... | ... paramètre |
$9 |
9ème paramètre |
Les tableaux¶
tableau=('valeur0' 'valeur1' 'valeur2')définir un tableau.${tableau[num]}appeler la variable d'une case d'un tableau. PS : la 1ère case est zèro.tableau[num]='valeur'définir une valeur d'une case.${tableau[*]}appeler l'ensemble d'un tableau.
Les tests¶
sur les chaînes de caractères¶
| Opérateur | Définition |
|---|---|
$chaine1 = $chaine2 |
identique |
$chaine1 != $chaine2 |
différent ? |
-z $chaine |
chaine vide |
-n $chaine |
chaine non vide |
sur les nombres¶
| Opérateur | Définition |
|---|---|
$num1 -eq $num2 |
= (equal) |
$num1 -ne $num2 |
= (no equal) |
$num1 -lt $num2 |
< (lower than) |
$num1 -le $num2 |
<= (lower or equal) |
$num1 -gt $num2 |
> (greater than) |
$num1 -ge $num2 |
>= (greater or equal) |
Sur les fichier¶
N'oubliez pas que sous Linux, tout est considéré comme un fichier, même un répertoire !
| Opérateur | définition |
|---|---|
-e $nomfichier |
existance du fichier |
-d $nomfichier |
être un répertoire |
-f $nomfichier |
être un vrai fichier |
-L $nomfichier |
être un lien symbolique (raccourci) |
-r $nomfichier |
être lisible ® |
-w $nomfichier |
être modifiable (w) |
-x $nomfichier |
être exécutable (x) |
$fichier1 -nt $fichier2 |
plus récent (newer than) |
$fichier1 -ot $fichier2 |
plus vieux (older than) |
Les opérateurs ensemblistes¶
| Opérateur logique | définition |
|---|---|
&& |
ET |
|| |
OU |
[! test] |
négation |
if : la condition la plus simple¶
¡ Attention, les espaces dans les crochets sont importants !
Les Boucles¶
Tant que c'est vrai¶
"tant que" répéte une action jusqu'a ce que la condition ne soit plus VRAI.Tant que c'est faux¶
Boucle For¶
parcourir la liste de valeurs et de boucler autant de fois qu'il y a de valeur. La liste des valeurs n'a pas besoin d'être définie dans le code.seq debut pas fincréer un vecteur a parcourrir(( i = 0; i < «nbre»; i++ ))for classique