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
./script.sh param1 param2 param3 .
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 (r) |
-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 !
if [ condition1 ]; then
instructions
elif [ condition2 ]; then
instructions
else
instruction
fi
case variable in
condition1) instruction1;;
condition2) instruction2;;
*) instruction3;;
esac
Les Boucles
Tant que c'est vrai
while [test] do
instructions
done
Tant que c'est faux
until [test]; do
instructions
done
Boucle For
for variable in 'valeur1' 'valeur2' 'valeur3'; do
instruction
done
seq debut pas fincréer un vecteur a parcourrir(( i = 0; i < «nbre»; i++ ))for classique