Les instructions

Publié le par Jean-Vincent

anti_bug_fcLes commandes if , while , until teste le status de la commande. (voir le man pour determiner le status renvoyé par une commande particuliere, en géneral si la commande s'execute correctement, le status est vrai)
Attention mettre une négation devant la commande (if ! cmde) ne permet pas de tester l'échec de la commande car la négation s'applique au résultat de la commande et non pas à son status.
Dans cette optique, le test est considéré comme une commande, on peut d'ailleurs l'utiliser sur une ligne de commande.
if
Syntaxe
 if cmde then liste_commandes [elif liste_commandes then liste_commandes] ... [else liste_commandes] fi 
Exemples
 if test -f $1 then file $1 else echo " le fichier n'existe pas " fi 
 if grep jean personnel then echo jean >> disponible elif grep pierre personnel then echo pierre >> disponible else echo vide >> disponible fi 
Syntaxe
 while commande do liste_commandes done 
Exemple
 while [ -r " $1 " ] do cat $1 >> concat shift done 
Syntaxe
 until commande do liste_commandes done 
Exemple
 until [ ! -r " $1 " ] do cat $1 >> concat shift done 
Syntaxe
 case para in choix1[|choix2] ... ) liste_commandes ;; esac 
Exemple
 case $1 in -d | -r ) rmdir $dir echo "option -d ou -r ";; -o ) echo "option -o ";; * ) echo "réponse incorrecte ";; esac 
for
Syntaxe
 for para [in liste] do liste_commandes done 

La variable para prend successivement les valeurs de la liste
si la liste est omise, para prend alors les valeurs passées en paramètres du script
Exemples
 for i in `ls` do cp $i /dir/$i echo "$i copie " done 
N'oublier pas les ` qui force l'exécution du ls.
 for dir in /dev /usr /users/bin /lib do num=`ls $dir|wc -w` echo "$num fichiers dans $dir " done 
 for i do echo $i done 
N'oubliez pas que le test est une commande qui peut être exécutée directement sur la ligne de commande
test expr ou [ expr ] (Attention il faut un espace apres [ et avant ])
ou expr vaut :
  -r fichier vrai si le fichier existe et est accessible en lecture (R)
  -w fichier vrai si le fichier existe et est accessible en écriture (W)
  -x fichier vrai si le fichier existe et est exécutable (X)
  -f fichier vrai si le fichier existe et est un fichier régulier
  -d fichier vrai si le fichier existe et est un répertoire
  -s fichier vrai si le fichier existe et a une taille non nulle
  -H fichier vrai si le fichier existe et est un répertoire caché
  -h fichier vrai si le fichier existe et est un lien symbolique
  s1 = s2 vrai si les deux expressions sont égales
  s1 != s2 vrai si les deux expressions sont différentes
  s1 vrai si s1 n'est pas la chaîne nulle
  e1 -eq e2 vrai si les deux entiers e1 et e2 sont algébriquement égaux
( autres comparaisons : -ne , -gt , -ge , -lt , -le)
  ! négation unaire
  -a opération binaire ET
  -o opération binaire OU

divers

# commentaires , mais #!/bin/sh en début de fichier force l'exécution en Bourne Shell
( cmde ) exécute la commande dans un sous-shell
read a lecture d'une entrée pendant l'exécution d'un script
exit num renvoie le status de la commande (en général 0 la commande s'est bien exécutée)
return num code d'erreur
. script exécution du script dans le shell courant
eval arg interprète arg avant de l'exécuter
cmd1 && cmd2 séparateur conditionnel (cmd2 sera exécuté si cmd1 s'est exécuté correctement)
cmd1 || cmd2 séparateur conditionnel (cmd2 sera exécuté si cmd1 ne s'est pas exécuté correctement)
nom_fonction ()
{ liste_commandes ;}
définition d'une fonction
exec arg exécute la commande dans un nouveau shell
set var initialisation d'une variable
liste de tous les paramètres du système
positionne les paramètres $i ( set a b c positionne $1 à a, $2 à b et $3 à c)
unset var raz d'une variable
type cmde indique la localisation d'une commande
readonly var empêche la modification d'une variable
expr exp op exp exécute des opérations arithmétiques (op vaut : + , - , * , / , % , = , > , < , > = , < = , !=)
expr exp1 | exp2 renvoie exp1 si l'expression n'est pas nulle, sinon exp2
expr exp1 & exp2 renvoie exp1 si l'expression n'est pas nulle, sinon exp2
expr exp1 : exp2 comparaison des deux arguments (renvoie le nombre de caractères en commun)
expr length exp retourne le nombre de caractères de exp
expr substr exp n1 n2 retourne une sous chaîne de exp commençant a la place n1 et de n2 caractères
expr index exp car retourne la position du caractère car dans la chaîne exp

l'expression est une commande donc pour affecter une opération à une variable, il faut forcer son exécution :
 a=`expr $b + $c` 
Publicité

Publié dans programmation

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article