Script shell
[Par jullule]
Les scripts shell sont des programmes qui permettent d'automatiser les tâches en lignes de commandes. a la place de tapper et de retapper des commandes souvent utilisé au clavier, on les place dans un fichier qu'il suffit de lancer
Créer le script shell.
Un fichier shell n'a pas besoin d'extension particulière => script mais pour plus de lisibilitée on peut utiliser l'extension => script.sh Apres c'est une question de lisibilité.
Lancer un script
Le script se lance comme tout programme avec => ./script.sh ou avec bash script.sh pour le debogger, on lance le script avec bash -x => bash -x script.sh
Pour commencer
Première instruction a taper, le nom du shell utilisé, le plus courent est => bash
#!/bin/bash ou #!/bin/autre shell
Dernière chose avant de partir, taper => exit 0 Pour dire que le programme c'est bien fini sans ambuche
commentaire => #commentaire
declarer une variable => variable = ca
lire ce que contient la variable => $variable
recuperer une variable (clavier) => read variable
afficher quelque chose => echo test ou bien => echo "test" ou encore => echo $variable;
les parentheses permettent d'ecrire sur plusieurs lignes
Variables d'environnement
$HOME contient le répertoire utilisateur.
$USER contient le login d'utilisateur.
$PWD contient le répertoire courant.
$SHELL contient le nom du shell de connexion.
$PATH contient la liste des répertoires où se trouvent les commandes que l'utilisateur peut exécuter.
$HOSTNAME contient le nom de la machine.
$HISTSIZE contient la taille maximale des commandes exécutées contenues dans le fichier historique.
$PS1 contient les paramètres d'affichage de l'invite de commande (le prompt).
$* contient tous les arguments passés à la fonction.
$# contient le nombre d'arguments.
$? contient le code de retour de la dernière opération.
$0 contient le nom du script.
$! contient le PID de la dernière commande lancée.
Passer des parametres
bash script.sh salut 1 cafe
$1 = "salut"; $2 = 1; $3 = "cafe";
<!> Rappel, la variable => $# contient le nombre de paramètre transmit au script
boucles
while [cette condition] #temps que do faire ca
done
until [y'a ca] #jusqu'a ce que do : faire ceci done
Condition
if [ "$variable" = "untruc" ]; then faire ca elif [ "$variable" = "untruc" ]; then else faire ce truc fi
Le case
case "$variable" in #si variable vaut ca | ou ca | ou encore ca ) faire ca;; ou si ca vaut ca | ou ca ) faire ca alors;; * ) si c'est aucun autre truc faire ca;; esac
Formatage du texte affiché en console
echo -e '\033[A;B;Cm texte \033[0m'
echo -e \033[1; 31m texte rouge \033[0m et içi par defaut => affiche: texte rouge et içi par defaut
A = effet du texte; B = couleur; C = couleur surlignage
Code | Effet |
0 | Normal |
1 | Gras |
21 | Non-gras |
4 | Souligné |
24 | Non souligné |
5 | Clignotant |
7 | Inversé |
27 | Non-inversé |
Couleur | texte | fond |
Noir | 30 | 40 |
Rouge | 31 | 41 |
Vert | 32 | 42 |
Jaune | 33 | 43 |
Bleu | 34 | 44 |
Magenta | 35 | 45 |
Cyan | 36 | 46 |
Blanc | 37 | 47 |
Fonctions
déclarer la fonction :
nomFonction () { faire ca avec ;}
utiliser la fonction :
nomFonction "arg1" 1
Les arguments ("arg1" et 1) sont optionnels, dans cet exemple => $1 = arg1 et $2 = 1, ...
On peut mettre les fonction dans un autre fichier appelé par => source fichier.sh