Introduction à Linux : Création de scripts
Les scripts sont des fichiers permettant de d'automatise une série de commandes compliquées,
de façon à regrouper des fonctions complexes dans une fonction
plus simples à appeler. Il peuvent être comparés aux .BAT du DOS bien que ces dernier soit moins puissants...
Un script tourne toujours dans un shell et il est important d'indiquer au système dans quel
shell un script donné à été réalisé.
Le choix de l'interprète de scripts ne dépend pas forcément de votre shell car il exécute
par ce dernier il faut surtout qu'il se trouve sur le système.
La liste suivante ne contient pas tous les interpréteurs de scripts, mais les plus connus...
Il faut noter que même si la création d'un scripts est souvent
plus simple que celle d'un programme, l'exécution des scripts et beaucoup beaucoup
plus lente qu'un programme (C ou autre) faisant la même chose...
sh
existe sur quasiment toutes les plates-formes,
il est extrêmement déconseillé pour les grands scripts ou la
gestion d'arithmétique non inclue.
sh
, possède des fonctions
interactives comparables à tcsh
. C'est le plus répandu sous
Linux, en raison de sa compatibilité avec la norme POSIX.
sh
est
suffisamment normalisée ( POSIX), et,
fait nouveau par rapport à sh
supporte les tableaux, et les
valeurs numériques dans le langage. Pour la session interactive, relativement
déconseillé.
Remarque :
La sélection de l'interprète se fait en mettant une ligne spéciale du fichier script par la commande :
#!/bin/sh
Pour exécuter se script, vous devez l'éditer, le sauver sous le nom choisi, puis utiliser la commande chmod u+x
sur le fichier.
Ensuite, testez le ....
mkdir poub
cp * poub
cd poub
ls -la
rm *
cd ..
rmdir poub
Le script du shell sh gère aussi les variables, qui commencent toutes par $.
Voici quelques variables :
$#
: Contient le nombre d'arguments passés du script.
$*
: Permet de représenter tous les arguments, séparés par un espace.
$i
:
i
peut valoir de 0 (nom de la commande courante) à $#
(dernier argument).
irc $0 salembo.enserb.u-bordeaux.fr
echo "Je vais exécuter 5 fois la commande $*"
for i in premier 2 3 4 dernier
do
$*
done