Les conditions dans un script shell
Objectif:
- Utiliser les conditions dans un script Shell
Énoncé:
-
écrire un script qui lit un entier à partir du clavier puis affiche son signe (négatif,positif ou nul)
-
écrire un script qui lit 2 chaînes de caractères comme paramètres puis compare leurs valeurs et affiche le résultat sous forme d'un message
Exemple d’exécution :aitmoulay@localhost:~$ bash script2.2.sh test autre
test et autre sont différentes
-
Écrire un script qui affiche le menu suivant :
1 – Windows?
2 – BeOs?
3 – Linux?
4 – Unix?
Réponse ?
Si vous répondez 1 alors le programme affiche « Dommage! », 2 il affiche « Peut mieux faire! », 3 « Pas mal! », 4 « Super! ».
-
Écrire un script qui dit si le premier paramètre passé en ligne de commande est un fichier,un répertoire, ou autre type.
Exemple d’exécution :aitmoulay@localhost:~$ bash script2.4.sh /etc
/etc est un dossier
aitmoulay@localhost:~$ bash script2.4.sh /etc/passwd
/etc/passwd est un fichier
aitmoulay@localhost:~$ bash script2.4.sh /dev/null
/dev/null est un autre type de fichier
-
Écrire un script permettant de lister uniquement les répertoires se trouvant dans un emplacement donné comme premier paramètre.
Exemple d’exécution :aitmoulay@localhost:~$ bash script2.5.sh /etc/X11
drwxr-xr-x 2 root root 4096 mars 11 17:34 app-defaults
drwxr-xr-x 4 root root 4096 févr. 18 19:50 fonts
drwxr-xr-x 2 root root 4096 mars 11 17:30 xinit
drwxr-xr-x 2 root root 4096 janv. 15 2014 xkb
drwxr-xr-x 2 root root 4096 mars 11 17:29 Xreset.d
drwxr-xr-x 2 root root 4096 mars 11 17:29 Xresources
drwxr-xr-x 2 root root 4096 mars 11 17:34 Xsession.d
drwxr-xr-x 2 root root 4096 févr. 18 19:56 xsm
-
Écrire une commande qui prend en argument un nom de fichier et affiche:
-
son nom si c'est un fichier régulier non exécutable suivi de la mention « est un fichier non exécutable »;
-
son nom si c'est un fichier régulier exécutable suivi de la mention « est un fichier exécutable »,
-
la liste de tous les fichiers réguliers exécutables qu'il contient si c'est un répertoire.
-
-
Écrire une commande recycle qui permet de manipuler une corbeille de fichiers (un répertoire)nommée corbeille et située à votre répertoire personnel. La commande accepte trois options :
-
recycle -l pour lister le contenu de la corbeille;
-
recycle -r pour vider la corbeille ;
-
recycle fichier1 fichier2 ... pour déplacer les fichiers considérés vers la corbeille.
Si la corbeille n'existe pas, elle est créée à l'appel de la commande.
-
-
-
Écrire un script qui concatène puis trie deux fichiers file1 et file2 dans un nouveau fichier file3 et qui affiche le nombre total de lignes. Les noms des trois fichiers doivent être passés en paramètre.
-
Modifier le script précédent pour demander à l'utilisateur de saisir au clavier le (ou les) nom(s) de fichiers qu'il aurait oublié d'indiquer en lançant le script
-
Script 1:
#!/bin/bash echo "saisir un entier" read n if [ $n -gt 0 ];then echo "$n est positif" elif [ $n -lt 0 ];then echo "$n est négatif" else echo "$n est nul" fi
Script 2:
#!/bin/bash if [ $1 = $2 ];then echo "$1 et $2 sont identiques" else echo "$1 et $2 sont différentes" fi
Script 3:
#!/bin/bash echo "1-Windows" echo "2-BeOs" echo "3-Linux" echo "4-Unix" read -p "réponse?" rep case $rep in 1)echo "Dommage!";; 2)echo "peut mieux faire";; 3)echo "pas mal";; 4)echo "super";; *)echo "choix invalid";; esac
Script 4:
#!/bin/bash if [ -f $1 ];then echo "$1 est un fichier" elif [ -d $1 ];then echo "$1 est un dossier" else echo "$1 est un autre type de fichier" fi
Script 5:
#!/bin/bash cd $1 for i in *;do if [ -d $i ];then ls -ld $i fi done
Script 6:
#!/bin/bash if [ -f $1 ]&& ! [ -x $1 ];then echo "$1 est un fichier non executable" elif [ -f $1 ]&&[ -x $1 ];then echo "$1 est un fichier executable" elif [ -d $1 ];then cd $1 for i in *;do if [ -f $i ]&&[ -x $i ];then ls -l $i fi done fi
Script 7:
#!/bin/bash if ! [ -e "Corbeille" ];then mkdir Corbeille fi if [ -z $1 ];then echo "usage:" echo "recycle -l:lister la corbeille" echo "recycle -r:vider la corbeille" echo "recycle fichiers:déplacer les fichiers vers la corbeille" elif [ $1 = "-l" ];then ls -l Corbeille elif [ $1 = "-r" ];then rm -r Corbeille/* else mv $* Corbeille fi
Script 8a:
#!/bin/bash if [ $# -lt 3 ];then echo "usage:concat file1 file2 file3" else echo "concaténation de $1 et $2 dans $3 ..." cat $1 $2>$3 echo "tri de $3 ..." sort $3 echo "le nombre de lignes que contient $3 est $(cat $3 |wc -l)" fi
Script 8b:
#!/bin/bash if [ $# -lt 3 ];then echo "usage:concat file1 file2 file3" echo "saisir 3 fichiers... " read f1 f2 f3 echo "concaténation de $f1 et $f2 dans $f3 ..." cat $f1 $f2>$f3 echo "tri de $f3 ..." sort $f3 echo "le nombre de lignes que contient $f3 est $(cat $f3 |wc -l)" else echo "concaténation de $1 et $2 dans $3 ..." cat $1 $2>$3 echo "tri de $3 ..." sort $3 echo "le nombre de lignes que contient $3 est $(cat $3 |wc -l)" fi