Script shell

De Wiki NCad
Aller à : navigation, rechercher

[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

code couleur du tutoriel :
en vert les commentaires
en bleu les exemples (à remplacer avec ses noms)


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 fonctions dans un autre fichier appelé par => source fichier.sh