Script shell : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
Ligne 55 : Ligne 55 :
 
== Passer des parametres ==
 
== Passer des parametres ==
  
bash <span style="color:blue;">script</span>.sh <span style="color:blue;">salut 1 cafe</span><br />
+
bash <span style="color:blue;">script</span>.sh <span style="color:blue;">salut 1 cafe</span>
 
$1 = "<span style="color:blue;">salut</span>"; $2 = <span style="color:blue;">1</span>; $3 = "<span style="color:blue;">cafe</span>";<br />
 
$1 = "<span style="color:blue;">salut</span>"; $2 = <span style="color:blue;">1</span>; $3 = "<span style="color:blue;">cafe</span>";<br />
 
Rappel, la variable => $# contient le nombre de paramètre transmit au script
 
Rappel, la variable => $# contient le nombre de paramètre transmit au script
Ligne 61 : Ligne 61 :
 
== boucles ==
 
== boucles ==
  
while [<span style="color:blue;">cette condition</span>] &emsp;<span style="color:green;">#temps que</span><br />
+
while [<span style="color:blue;">cette condition</span>] &emsp;<span style="color:green;">#temps que</span>
do<br />
+
do
:<span style="color:blue;">faire ca</span><br />
+
  <span style="color:blue;">faire ca</span><br />
done<br />
+
done
 +
 
 +
 
 +
until [y'a ca] &emsp; <span style="color:green;">#jusqu'a ce que</span>
 +
do
 +
: <span style="color:blue;">faire ceci</span>
 +
done
  
 
until [y'a ca] &emsp; <span style="color:green;">#jusqu'a ce que</span><br />
 
do<br />
 
: <span style="color:blue;">faire ceci</span>
 
done
 
  
 
== Condition ==
 
== Condition ==
  
if [ <span style="color:blue;">"$variable" = "untruc"</span> ]; then<br />
+
if [ <span style="color:blue;">"$variable" = "untruc"</span> ]; then
: <span style="color:blue;">faire ca</span><br />
+
  <span style="color:blue;">faire ca</span>
elif [ <span style="color:blue;">"$variable" = "untruc"</span> ]; then<br />
+
elif [ <span style="color:blue;">"$variable" = "untruc"</span> ]; then
: <span style="color:blue;">faire ceci</span><br />
+
else
else<br />
+
  <span style="color:blue;">faire ce truc</span>
: <span style="color:blue;">faire ce truc</span><br />
+
fi
fi
+
  
  
 
== Le case ==
 
== Le case ==
case "$<span style="color:blue;">variable</span>" in        <span style="color:green;">#si variable vaut</span><br />
+
case "$<span style="color:blue;">variable</span>" in        <span style="color:green;">#si variable vaut</span>
: <span style="color:blue;">ca</span> | <span style="color:blue;">ou ca</span> | <span style="color:blue;">ou encore ca</span> ) <span style="color:blue;">faire ca</span>;;<br />
+
  <span style="color:blue;">ca</span> | <span style="color:blue;">ou ca</span> | <span style="color:blue;">ou encore ca</span> ) <span style="color:blue;">faire ca</span>;;
: <span style="color:blue;">ou si ca vaut ca</span> | <span style="color:blue;">ou ca</span> ) <span style="color:blue;">faire ca alors</span>;;<br />
+
  <span style="color:blue;">ou si ca vaut ca</span> | <span style="color:blue;">ou ca</span> ) <span style="color:blue;">faire ca alors</span>;;
: <nowiki>*</nowiki> ) <span style="color:blue;">si c'est aucun autre truc faire ca</span>;;<br />
+
  <nowiki>*</nowiki> ) <span style="color:blue;">si c'est aucun autre truc faire ca</span>;;
 
esac
 
esac
  
Ligne 93 : Ligne 93 :
 
== Formatage du texte affiché en console ==
 
== Formatage du texte affiché en console ==
 
 
echo -e '\033[<span style="color:blue;">A</span>;<span style="color:blue;">B</span>;<span style="color:blue;">C</span>m <span style="color: blue;">texte</span> \033[0m'<br />
+
echo -e '\033[<span style="color:blue;">A</span>;<span style="color:blue;">B</span>;<span style="color:blue;">C</span>m <span style="color: blue;">texte</span> \033[0m'
 
echo -e \033[1; 31m texte rouge \033[0m  et içi par defaut => affiche: <span style="color: red;">texte rouge</span> et içi par defaut<br />
 
echo -e \033[1; 31m texte rouge \033[0m  et içi par defaut => affiche: <span style="color: red;">texte rouge</span> et içi par defaut<br />
 
A = effet du texte; B = couleur; C = couleur surlignage<br />
 
A = effet du texte; B = couleur; C = couleur surlignage<br />
Ligne 188 : Ligne 188 :
 
=== déclarer la fonction : ===
 
=== déclarer la fonction : ===
  
<span style="color:blue;">nomFonction </span> () {<br />
+
<span style="color:blue;">nomFonction </span> () {
: <span style="color:blue;">faire ca avec</span><br />
+
  <span style="color:blue;">faire ca avec</span>
;}
+
;}
  
  
 
=== utiliser la fonction : ===
 
=== utiliser la fonction : ===
  
<span style="color:blue;"> nomFonction "arg1" 1</span><br />
+
<span style="color:blue;"> nomFonction "arg1" 1</span><br />
 
Les arguments (<span style="color:blue;">"arg1"</span> et <span style="color:blue;">1</span>) sont optionnels, dans cet exemple => $1 = <span style="color:blue;">arg1</span> et $2 = <span style="color:blue;">1</span>, ...<br />
 
Les arguments (<span style="color:blue;">"arg1"</span> et <span style="color:blue;">1</span>) sont optionnels, dans cet exemple => $1 = <span style="color:blue;">arg1</span> et $2 = <span style="color:blue;">1</span>, ...<br />
 
On peut mettre les fonction dans un autre fichier appelé par => source <span style="color:blue;">fichier.sh</span>
 
On peut mettre les fonction dans un autre fichier appelé par => source <span style="color:blue;">fichier.sh</span>

Version du 7 janvier 2014 à 18:19

[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