Ecrire un script qui dit si le paramètre passé est :
un fichier
un répertoire
inexistant
#!/bin/bash # Script qui teste l'élément passé en paramètre. if ! [ -e $1 ] ; then echo "$1 n'existe pas." elif [ -f $1 ] ; then echo "$1 est un fichier." elif [ -d $1 ] ; then echo "$1 est un dossier." fi
Ecrivez un script qui n'affiche que les répertoires.
#!/bin/bash # Script qui n'affiche que les répertoires. for i in `ls -1` ; do if [ -d $i ] ; then echo $i fi done
Ecrirez un script qui n'affiche que les fichiers
#!/bin/bash # Script qui n'affiche que les fichiers. for i in `ls -1` ; do if [ -f $i ] ; then echo $i fi done
Ecrivez un script qui donne le nombre de fichiers et de répertoires
#!/bin/bash # Script qui affiche le nombre de fichiers et de répetoires. nbfic=0 nbrep=0 for i in `ls -1` ; do if [ -f $i ] ; then let nbfic=nbfic+1 elif [ -d $i ] ; then let nbrep=nbrep+1 fi done echo "Il y a :" echo "$nbfic fichier(s)." echo "$nbrep répertoire(s)."Exemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./afficherNbFichiersRepertoires.sh Il y a : 7 fichier(s). 2 répertoire(s).
En utilisant la structure case, écrire un script qui :
affiche un menu
demande à l'utilisateur de saisir une option du menu
affiche à l'utilisateur l'option choisie
#!/bin/bash # Affichage d'un menu echo "*********** Menu général ************" echo -e "<1>\tComptabilité" echo -e "<2>\tGestion commerciale" echo -e "<3>\tPaie" echo -e "<9>\tQuitter" echo "*************************************" read choix case $choix in 1) echo "Vous avez choisi \"Comptabilité\"." ;; 2) echo "Vous avez choisi \"Gestion commerciale\"." ;; 3) echo "Vous avez choisi \"Paie\"." ;; 9) echo "Bye bye." ;; *) echo "Vérifiez votre saisie." ;; esac
En utilisant la structure for, écrire un programme calcul.sh qui donne les valeurs de 'y' d'une fonction pour les valeurs de x allant de -10 à 10 avec un incrément de 1. Prenez par exemple la fonction y = 2x + 3.
#!/bin/bash # Réglage de la fonction du type y=ax+b a=2 b=3 for ((i=-10;i<=10;i=i+1)); do echo "y($i) = `expr $a \* $i + $b`" doneExemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./calcul.sh y(-10) = -17 y(-9) = -15 y(-8) = -13 y(-7) = -11 y(-6) = -9 y(-5) = -7 y(-4) = -5 y(-3) = -3 y(-2) = -1 y(-1) = 1 y(0) = 3 y(1) = 5 y(2) = 7 y(3) = 9 y(4) = 11 y(5) = 13 y(6) = 15 y(7) = 17 y(8) = 19 y(9) = 21
Modifier le programme pour la fonction y = x^2.
#!/bin/bash echo -e "Fonction y = x^2\n----------------" for ((i=-10;i<=10;i=i+1)); do echo "y($i) = `expr $i \* $i`" done
Adaptez le programme avec la structure répéter.. jusqu'à.
#!/bin/bash echo -e "Fonction y = x^2\n----------------" # Initialisation i=-10 until [ $i -eq 10 ] ; do echo "y($i) = `expr $i \* $i`" ((i++)) # ou let i=i+1 doneExemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./calcul.sh Fonction y = x^2 ---------------- y(-10) = 100 y(-9) = 81 y(-8) = 64 y(-7) = 49 y(-6) = 36 y(-5) = 25 y(-4) = 16 y(-3) = 9 y(-2) = 4 y(-1) = 1 y(0) = 0 y(1) = 1 y(2) = 4 y(3) = 9 y(4) = 16 y(5) = 25 y(6) = 36 y(7) = 49 y(8) = 64 y(9) = 81
Adapter le script afin que les bornes -10 et +10 soient passées en paramètres au script.
#!/bin/bash echo -e "Fonction y = x^2\n----------------" for ((i=$1;i<=$2;i=i+1)); do echo "y($i) = `expr $i \* $i`" doneExemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./calcul.sh 10 15 Fonction y = x^2 ---------------- y(10) = 100 y(11) = 121 y(12) = 144 y(13) = 169 y(14) = 196 y(15) = 225
Modifier le script de façon à ce que l'on puisse passer en paramètre l'incrément.
#!/bin/bash echo -e "Fonction y = x^2\n----------------" for ((i=$1;i<=$2;i=i+$3)); do echo "y($i) = `expr $i \* $i`" doneExemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./calcul.sh 10 15 2 Fonction y = x^2 ---------------- y(10) = 100 y(12) = 144 y(14) = 196
En utilisant la structure if, écrire un script qui :
affiche un menu
demande à l'utilisateur de saisir une option du menu
affiche à l'utilisateur l'option qu'il a choisie
#!/bin/bash echo "*********** Menu général ************" echo -e "<1>\tComptabilité" echo -e "<2>\tGestion commerciale" echo -e "<3>\tPaie" echo -e "<9>\tQuitter" echo "*************************************" echo -n "Veuillez faire votre choix :" read choix if [ $choix -eq 1 ]; then echo "Vous avez choisi Comptabilité." elif [ $choix -eq 2 ]; then echo "Vous avez choisi Gestion commerciale." elif [ $choix -eq 3 ]; then echo "Vous avez choisi Paie." elif [ $choix -eq 9 ]; then echo "Bye bye.." fi
Vous aller maintenant utiliser un fichier data dans lequel vous stockerez les informations suivantes :
premier 3 deuxième 10 troisième 25 quatrième 2 cinquième 12 EOFConstruisez un script qui permet de n'afficher que les renseignements dont la valeur est supérieure à 10 :
#!/bin/bash cat data| while true; do # Lecture du flux read ligne if [ "$ligne" == "EOF" ]; then exit 0 fi set -- $ligne if [ $2 -ge 10 ]; then echo $ligne fi done
En utilisant la structure until..do..done, écrire un script qui :
demande à un utilisateur de saisir une commande système
exécute la commande ou affiche un message d'erreur si la commande ne s'est pas déroulée
répète cette opération tant que l'utilisateur le désire
#!/bin/bash clear echo "------------------------------------------------------" echo "| Saisissez une commande, commande <Q> pour quitter. |" echo "------------------------------------------------------" cmd=dumb until [ "$cmd" == "Q" -o "$cmd" == "q" ] ; do echo -n "commande : " read -r cmd # Eclatement de la commande en plusieurs arguments $1, $2 ... set -- $cmd # Vérification de l'existence de la commande. which $1 &> /dev/null if [ $? -ne 0 ] ; then # $? correspond à la dernière valeur retournée. echo "la commande $cmd n'existe pas !!" else # Evaluation de la commande eval $cmd 2> /dev/null fi done
#!/bin/bash # Etude de la fonction while clear echo "********************** Menu général **********************" echo -e "<1>\tAfficher la date (date)" echo -e "<2>\tAfficher le nombre de personnes connectées (who)" echo -e "<3>\tAfficher la liste des processus (ps)" echo -e "<9>\tQuitter" echo "**********************************************************" input=0 while [ $input -ne 9 ]; do # Lecture du choix utilisateur echo -n "Choix :" read input # Contrôler si il s'agit bien d'un integer. #if [ ]; then # continue #fi case $input in 1) echo "Affichage de la date :"; date;; 2) echo "Affichage du nombre de personnes connectées :"; who;; 3) echo "Affichage de la liste des processus :"; ps;; 9) echo "Bye bye..";; *);; esac done
Vous allez, à l'aide de la fonction select, réaliser un menu à quatre options pour un utilisateur. Le script doit boucler tant que l'utilisateur n'a pas choisi de quitter.
#!/bin/bash # Etude de la fonction select select choix in \ "Affiche la liste des utilisateurs connectés" \ "Affiche la liste des processus" \ "Afficher à l'utilisateur son, son UID, son GID, son TTY1" \ "Terminer" do case $REPLY in 1) echo "$choix"; who;; 2) echo "$choix"; ps;; 3) echo "$choix"; id;; *) echo "Bye bye.."; exit 0;; esac doneExemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./select.sh 1) Affiche la liste des utilisateurs connectés 2) Affiche la liste des processus 3) Afficher à l'utilisateur son, son UID, son GID, son TTY1 4) Terminer #? 1 Affiche la liste des utilisateurs connectés cvanvinc tty7 2012-02-16 08:44 (:0) cvanvinc pts/1 2012-02-16 10:18 (:0.0) cvanvinc pts/2 2012-02-16 10:20 (:0.0) cvanvinc pts/3 2012-02-16 10:25 (:0.0) #? 2 Affiche la liste des processus PID TTY TIME CMD 15911 pts/3 00:00:00 select.sh 15925 pts/3 00:00:00 ps 28717 pts/3 00:00:00 bash #? 2 Affiche la liste des processus PID TTY TIME CMD 15911 pts/3 00:00:00 select.sh 15930 pts/3 00:00:00 ps 28717 pts/3 00:00:00 bash #? 3 Afficher à l'utilisateur son, son UID, son GID, son TTY1 uid=2498(cvanvinc) gid=6052(m2isidis) groupes=6052(m2isidis) #? 4 Bye bye..
En utilisant les structures que vous connaissez, écrire un script mul.sh qui affiche la table de multiplication d'un nombre donné en paramètre. Exemple mul.sh 4, donne la table de multiplication de 4. Vous afficherez les résultats pour un multiplicateur allant de 1 à 10. L'affichage de la table de multiplication sera réalisé par une fonction affTABLE().
#!/bin/bash # Affiche la table des multiplications function affTABLE { for ((i=0;i<=10;i++)); do echo "$i x $1 = `expr $i \* $1`" done } affTABLE $1
Exemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./mul.sh 4 0 x 4 = 0 1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20 6 x 4 = 24 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36 10 x 4 = 40
Modifier le script afin que les bornes du multiplicateur soient passés en paramètres : Exemple mul.sh 3 25 35. On veut la table de multiplication de 3*25 jusqu'à 3*35.
#!/bin/bash # Affiche la table des multiplications function affTABLE { for ((i=$2;i<=$3;i++)); do echo "$i x $1 = `expr $i \* $1`" done } affTABLE $1 $2 $3
Exemple d'utilisation :
cvanvinc@pinson ~/Bureau $ ./mul.sh 4 25 35 25 x 4 = 100 26 x 4 = 104 27 x 4 = 108 28 x 4 = 112 29 x 4 = 116 30 x 4 = 120 31 x 4 = 124 32 x 4 = 128 33 x 4 = 132 34 x 4 = 136 35 x 4 = 140
Modifier le programme de façon à écrire une calculatrice. L'utilisateur saisit un nombre (par exemple 3). Ensuite il saisira des couples opérateur nombre (exemple + 3). Le programme réalisera les opérations jusqu'à ce que l'utilisateur tape l'opérateur "=" et affichera le résultat final.
#!/bin/bash # Calculatrice élémentaire # Déspécialisation masque=\\ function calcul { case $2 in "\+") nombre1=`expr $1 + $3`;; "\-") nombre1=`expr $1 - $3`;; "\/") nombre1=`expr $1 / $3`;; "\*") nombre1=`expr $1 \* $3`;; *) echo "opérateur \"$2\" inconnu";; esac } clear echo "----- Calculatrice minimaliste -----" echo -n "Entrez un nombre :" read nombre1 echo "Entrez une opération (eg. + 10) :" read operateur nombre2 while [ "$operateur" != "=" ]; do operateur=$masque$operateur calcul $nombre1 $operateur $nombre2 read operateur nombre2 done echo "résultat = $nombre1"
#!/bin/bash while true; do # lance le processus Ping ./Ping.sh & # attend dix secondes sleep 10 # tue le processus Ping killall Ping.sh echo "Ping est mort." # lance le processus Pong ./Pong.sh & # attend dix secondes sleep 10 # tue le processus Ping killall Pong.sh echo "Pong est mort." done