Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | Prochaine révision Les deux révisions suivantes | ||
tutoriel:script_shell [Le 13/10/2021, 11:53] 195.221.155.15 oiui |
tutoriel:script_shell [Le 13/10/2021, 20:26] Amiralgaby structure + code balisé amélioré |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
{{tag>programmation script shell console tutoriel}} | {{tag>programmation script shell console tutoriel}} | ||
- | --- | + | |
- | oui | + | ---- |
====== Introduction aux scripts shell ====== | ====== Introduction aux scripts shell ====== | ||
Ligne 33: | Ligne 34: | ||
done | done | ||
</code> | </code> | ||
- | =====Pour faire qu'un script soit exécutable ===== | ||
+ | =====Pour faire qu'un script soit exécutable ===== | ||
==== Méthode graphique ==== | ==== Méthode graphique ==== | ||
Ligne 62: | Ligne 63: | ||
Puis vous pouvez exécuter le script en faisant : <code bash>./nom_du_script</code> | Puis vous pouvez exécuter le script en faisant : <code bash>./nom_du_script</code> | ||
mais pourquoi le ./ ? | mais pourquoi le ./ ? | ||
+ | |||
=== Le chemin ./ === | === Le chemin ./ === | ||
Ligne 108: | Ligne 110: | ||
La commande **sh** est en fait un lien symbolique vers l'interpréteur de commandes par défaut : **/bin/dash**. | La commande **sh** est en fait un lien symbolique vers l'interpréteur de commandes par défaut : **/bin/dash**. | ||
+ | |||
===== Les variables ===== | ===== Les variables ===== | ||
Il faut savoir que en bash les variables sont toutes des chaînes de caractères.\\ | Il faut savoir que en bash les variables sont toutes des chaînes de caractères.\\ | ||
Ligne 177: | Ligne 180: | ||
</code> | </code> | ||
- | Exemple: un sleep interactif pour illustrer $! (Cf. [[:tutoriel:script_shell#les_fonctions|les fonctions]]) . | + | Exemple: un sleep interactif pour illustrer $! (Cf. [[:tutoriel:script_shell#les_fonctions|les fonctions]]).\\ |
- | + | Pour déclarer un tableau, plusieurs méthodes :\\ | |
- | + | ||
- | Pour déclarer un tableau, plusieurs méthodes : | + | |
première méthode (compatible bash, zsh, et ksh93 mais pas ksh88, ni avec dash, qui est lancé par "sh") : | première méthode (compatible bash, zsh, et ksh93 mais pas ksh88, ni avec dash, qui est lancé par "sh") : | ||
<code bash>tab=("John Smith" "Jane Doe")</code> | <code bash>tab=("John Smith" "Jane Doe")</code> | ||
Ligne 194: | Ligne 194: | ||
<code bash> | <code bash> | ||
len=${#tab[*]} ou echo ${#tab[@]} | len=${#tab[*]} ou echo ${#tab[@]} | ||
- | |||
</code> | </code> | ||
Ligne 208: | Ligne 207: | ||
ou encore ( C style ) : | ou encore ( C style ) : | ||
<code bash>for (( i=0; i < ${#tab[@]}; i++ )); do echo ${tab[i]}; done</code> | <code bash>for (( i=0; i < ${#tab[@]}; i++ )); do echo ${tab[i]}; done</code> | ||
- | |||
Ligne 225: | Ligne 223: | ||
* une ponctuation (pe : ',', '.', '-'...) | * une ponctuation (pe : ',', '.', '-'...) | ||
* un caractère spécial : ($'\t' : tabulation, $'\n' : saut de ligne,...) | * un caractère spécial : ($'\t' : tabulation, $'\n' : saut de ligne,...) | ||
+ | |||
==== Les arguments en ligne de commande ==== | ==== Les arguments en ligne de commande ==== | ||
Ligne 274: | Ligne 273: | ||
done | done | ||
</code> | </code> | ||
+ | |||
===== Vocabulaire ===== | ===== Vocabulaire ===== | ||
==== La commande test ==== | ==== La commande test ==== | ||
Ligne 376: | Ligne 376: | ||
Pour pouvoir voir la valeur d'une variable il faut faire précéder son nom du caractère « $ ». | Pour pouvoir voir la valeur d'une variable il faut faire précéder son nom du caractère « $ ». | ||
- | |||
- | |||
<code bash> | <code bash> | ||
Ligne 453: | Ligne 451: | ||
-n $A # Vérifie si A existe (contient une chaîne). | -n $A # Vérifie si A existe (contient une chaîne). | ||
</code> | </code> | ||
+ | |||
==== Les structures while et until ==== | ==== Les structures while et until ==== | ||
Ligne 554: | Ligne 553: | ||
Et plein d'autres encore... | Et plein d'autres encore... | ||
- | == On mélange tout ça == | + | === On mélange tout ça === |
Pour vous donner une idée précise de ce que peuvent réaliser toutes ces instructions, | Pour vous donner une idée précise de ce que peuvent réaliser toutes ces instructions, | ||
Ligne 612: | Ligne 611: | ||
</code> | </code> | ||
- | == Remarque == | + | === Remarque === |
Comme vous l'avez remarqué, l'indentation a une place importante dans | Comme vous l'avez remarqué, l'indentation a une place importante dans | ||
Ligne 850: | Ligne 849: | ||
* Commencer par : <code bash>#!/bin/bash | * Commencer par : <code bash>#!/bin/bash | ||
# Version du script</code> | # Version du script</code> | ||
- | * Créer des fonctions pour des actions précises : | + | * Créer des fonctions pour des actions précises :<code bash>nom_de_la_fonction() |
- | <code bash> | + | |
- | nom_de_la_fonction() | + | |
{ | { | ||
... | ... | ||
- | } | + | }</code> |
- | </code> | + | |
* Utiliser des chemins absolus pour les dossiers et des chemins relatifs pour les noms de fichiers : <code bash>$CHEMIN_DU_DOSSIER/$NOM_DU_FICHIER</code> | * Utiliser des chemins absolus pour les dossiers et des chemins relatifs pour les noms de fichiers : <code bash>$CHEMIN_DU_DOSSIER/$NOM_DU_FICHIER</code> | ||
* Utiliser les entrées de commandes pour les fonctions :<code bash>nom_de_la_fonction $1 $2 $3 ....</code> | * Utiliser les entrées de commandes pour les fonctions :<code bash>nom_de_la_fonction $1 $2 $3 ....</code> | ||
Ligne 876: | Ligne 872: | ||
exit 100 | exit 100 | ||
fi | fi | ||
- | }</code>ainsi après chaque commande vous pouvez donner des codes d'exécutions différents. | + | }</code> ainsi après chaque commande vous pouvez donner des codes d'exécutions différents. |
<note tip>Astuce : le plus important dans tout programme est l'algorithme utilisé.</note> | <note tip>Astuce : le plus important dans tout programme est l'algorithme utilisé.</note> | ||
Ligne 901: | Ligne 897: | ||
* (fr ) [[http://www.scotchlinux.tuxfamily.org/]] exemples de scripts bash, quelques trucs utiles ( fonctions, fonctions comme paramètres... ) | * (fr ) [[http://www.scotchlinux.tuxfamily.org/]] exemples de scripts bash, quelques trucs utiles ( fonctions, fonctions comme paramètres... ) | ||
* (en) [[https://www.shellcheck.net/]] Permet de corriger la syntaxe du script (parenthèse oubliée, graphie incorrecte d'une commande, un "if" sans son "fi", un "while sans son "do" ou son "done", etc...). | * (en) [[https://www.shellcheck.net/]] Permet de corriger la syntaxe du script (parenthèse oubliée, graphie incorrecte d'une commande, un "if" sans son "fi", un "while sans son "do" ou son "done", etc...). | ||
+ | |||
---- | ---- | ||
+ | |||
//Contributeurs: [[:utilisateurs:Gapz]], [[:utilisateurs:Gloubiboulga]] ,[[:utilisateurs:sparky]] et [[:utilisateurs:deax_one]]// | //Contributeurs: [[:utilisateurs:Gapz]], [[:utilisateurs:Gloubiboulga]] ,[[:utilisateurs:sparky]] et [[:utilisateurs:deax_one]]// | ||