Les scripts
Linux
Linux 11 CPI
CPI 2018/2019
2018/2019
-1-
Les scripts
-2-
Les scripts
Un script est un ensemble de commandes dans un
fichier
Une ligne dans un script peut :
● être vide
● se composer de commentaires en utilisant #
● se composer d’une seul commande
● se composer de plusieurs commandes
séparées ; ou | ou && ou ||
-3-
Les scripts
Exemple 01 (structure d'un script)
# ! pour spécifier shell utilisé
#!/bin/bash
# La ligne suivante est vide
# La ligne suivante contient une seul commande
sleep 1& # La ligne en question
# La ligne suivante utilise ;
logname ; hostname ; pwd
# La ligne suivante utilise |
ps | grep bash
# La ligne suivante utilise &&
echo "PID:" && echo "bg: $!, shell: $$"
-4-
Les scripts
-5-
Les scripts
● Pour rendre un script exécutable
Syntaxe: chmod +x nom_script
● Pour l’exécuter
Syntaxe: ./nom_script
● Pour éviter ./
Syntaxe: PATH+=:.
Ou : PATH=$PATH:.
-6-
Les scripts
Exemple 01
user1@PC:~$ cat exemple_script
#!/bin/bash
# La ligne suivante est vide
# La ligne suivante contient une seul commande
sleep 1& # La ligne en question
# La ligne suivante utilise ;
logname ; hostname ; pwd
# La ligne suivante utilise |
ps | grep bash
# La ligne suivante utilise &&
echo "PID:" && echo "bg: $!, shell: $$"
-7-
Les scripts
Exemple 01 (exécution)
user1@PC:~$ ./exemple_script
bash: ./exemple_script: Permission non accordée
user1@PC:~$ chmod +x exemple_script
user1@PC:~$ ./exemple_script
user1
PC
/home/user1
2706 pts/0 [Link] bash
PID:
bg: 3127, shell: 3126
-8-
Les scripts
Exemple 02 (echo -e )
-e : interpréte les caractères comme \n qui
signifie retour à la ligne
user1@PC:~$ cat exemple2_echo
#!/bin/bash
# sans -e
echo "pid du bash actif est: $$ \nl'état de la
dernière commade est: $? "
# avec -e
echo -e "pid du bash actif est: $$ \nl'état de
la dernière commade est: $? "
-9-
Les scripts
Exemple 02 (exécution)
user1@PC:~$ ./exemple2_echo
pid du bash actif est: 10947 \nl'état de la
dernière commade est: 0
pid du bash actif est: 10947
l'état de la dernière commade est: 0
- 10 -
Les scripts
- 11 -
Les scripts
- 12 -
Les scripts
Les paramètres du script sont placés après le nom
du script et séparés par des espaces
Syntaxe: ./nom_script [paramètres]
Les paramètres sont récupérées à travers des
variables spéciales
● $0 nom du script
● $1,$2,$3...$9 les 9 premiers paramètres
● $# nombre de paramètres
● $* et $@ contiennent tous les paramètres
- 13 -
Les scripts
Exemple (passage de paramètres)
user1@PC:~$ cat exemple_param
#!/bin/bash
echo "Nom du script est : $0"
echo "Nombre de parametres : $#"
echo "Parametres : 1=$1 2=$2 3=$3"
echo '$*:' "$*"
file $*
echo '$@:' "$@"
file $@
- 14 -
Les scripts
Exemple (exécution)
user1@PC:~$ ./exemple_param fich1 fich2 Bureau/
Nom du script est : ./exemple_param
Nombre de parametres : 3
Parametres : 1=fich1 2=fich2 3=Bureau/
$*: fich1 fich2 Bureau/
fich1: ASCII text
fich2: ASCII text
Bureau/: directory
$@: fich1 fich2 Bureau/
fich1: ASCII text
fich2: ASCII text
Bureau/: directory
- 15 -
Les scripts
- 16 -
Les scripts
La commande read permet de lire des données
depuis l'entrée standard
Syntaxe: read variable1 [variable2 ...]
Les données sont récupérées dans les variables
variable1 variable2 ...
- 17 -
Les scripts
Exemple 01 (read)
user1@PC:~$ cat exemple_read
#!/bin/bash
echo "Entrer le nom du processus:"
read processus
echo "le PID du processus est :" `pgrep $processus -u $USER`
echo "confirmation en utilisant PS"
ps -f -u $USER |grep $processus | grep -v 'grep'
echo 'confirmation en utilisant $$:' $$
- 18 -
Les scripts
Exemple 01 (exécution)
user1@PC:~$ ./exemple_read
Entrer le nom du processus
bash
le PID du processus est : 3895
confirmation en utilisant PS
user1 3895 3894 0 08:36 pts/0 [Link] bash
user1 5467 3895 0 09:57 pts/0 [Link] /bin/bash ./exemple_read
confirmation en utilisant $$: 5467
- 19 -
Les scripts
Exemple 02 (read -p)
-p : afficher un message de prompt
user1@PC:~$ cat exemple2_read
#!/bin/bash
read -p "Entrer le nom du processus: " processus
echo "le PID du processus est :" `pgrep $processus -u $USER`
echo "confirmation en utilisant PS"
ps -f -u $USER |grep $processus | grep -v 'grep'
echo 'confirmation en utilisant $$:' $$
- 20 -
Les scripts
Exemple 02 (exécution)
user1@PC:~$ ./exemple2_read
Entrer le nom du processus: bash
le PID du processus est : 3895
confirmation en utilisant PS
user1 3895 3894 0 08:36 pts/0 [Link] bash
user1 5467 3895 0 09:57 pts/0 [Link] /bin/bash ./exemple_read
confirmation en utilisant $$: 5467
- 21 -
Les scripts
Exemple 03 (read -s)
-s : ne pas afficher le texte saisi
user1@PC:~$ cat exemple3_read
#!/bin/bash
read -p "Entrer la nouvelle password: " -s password
# retour à la ligne
echo -e "\n"
#format est "old_passwd\nnew_passwd\nnew_passwd
echo -e "esi\n$password\n$password" | passwd
- 22 -
Les scripts
Exemple 03 (exécution)
user1@PC:~$ ./exemple3_read
Entrer la nouvelle password:
Changement du mot de passe pour user1.
Mot de passe UNIX (actuel) : Entrez le nouveau
mot de passe UNIX : Retapez le nouveau mot de
passe UNIX : passwd : le mot de passe a été mis
à jour avec succès
- 23 -
Les scripts
Linux
Linux 11 CPI
CPI 2018/2019
2018/2019
- 24 -