SE UNIX - Part2
SE UNIX - Part2
SE UNIX - Part2
Permet d’afficher des Affichage d'une chaine (string) sur 20 positions avec
%20s cadrage à droite
données formatées.
Cette commande est Affichage d'une chaine (string) sur 20 positions avec
%-20s cadrage à gauche
une sorte de “echo”
nettement amélioré Affichage d'un entier (décimal) sur 3 positions avec
%3d cadrage à droite
proposant des formats
pour afficher les Affichage d'un entier (décimal) sur 3 positions avec
%03d cadrage à droite et complété avec des 0 à gauche
nombres réels.
Les programmeurs C Affichage d'un entier (décimal) sur 3 positions avec
%-3d cadrage à gauche
reconnaîtront une
implémentation en %+3d
Affichage d'un entier (décimal) sur 3 positions avec
ligne de commande de cadrage à droite et affichage systématique du signe
la célèbre fonction de Affichage d'un nombre flottant sur 10 positions dont 2
%10.2f
la bibliothèque stdio.h décimales
Exemples de formats Affichage d'un nombre flottant sur 10 positions dont 2
(voir tableau) : %+010.2f décimales, complété par des 0 à gauche, avec cadrage à
droite et affichage systématique du signe
Les variables Utilisateur
Commande read pour la saisie ou lecture:
$ read v
$ echo $v
Quelques options:
-p : pour afficher un message
$ read –p "donner v: " v
-s : pour masquer la saisie
$ read –p "donner v: " –s v
-n : pour limiter le nombre de caractères
$ read –p "donner v: " –n 5 v
-t : pour limiter le temps de saisie
$ read –p "donner v: " –t 2 v
Les variables Utilisateur
$ MOT=volume
Précaution sur les variables:
$ echo $MOT42
Mieux vaut utiliser ${nom_variable} que
$nom_variable : $ echo ${MOT}42
volume42
$
Substitution de variables:
utilise la valeur de la variable si elle est positionnée et non nulle,
${variable:-valeur}
sinon utilise la valeur donnée.
utilise la valeur de la variable si elle est positionnée et est non
${variable:=valeur} nulle, sinon affecte la valeur à la variable et utilise la valeur
donnée.
utilise la valeur de la variable si elle est positionnée et non nulle,
${variable:?valeur} sinon écrit la valeur sur l’erreur standard et fait un exit avec un
statut non nul
utilise une chaîne vide si la variable est positionnée et non nulle,
${variable:+valeur}
sinon, utilise la valeur.
${#variable} utilise la taille de la valeur de la variable
Les variables Utilisateur
Substitution de variables: (Exemples)
$ jour=mardi
$ echo "Nous sommes : ${jour:-dimanche}"
Nous sommes : mardi
$ unset jour
$ echo "Nous sommes : ${jour:-dimanche}"
${variable:-valeur}
Nous sommes : dimanche
$ echo $jour
$
$ jour=mardi
$ echo "Nous sommes : ${jour:=dimanche}"
Nous sommes : mardi
$ echo $jour
mardi
$ unset jour ${variable:=valeur}
$ echo "Nous sommes : ${jour:=dimanche}"
Nous sommes : dimanche
$ echo $jour
dimanche
$
Les variables Utilisateur
Substitution de variables: (Exemples)
$ bool=1
$ echo "Si bool=1 alors j'affiche :
${bool:+true}"
Si bool=1 alors j'affiche : true
$ unset bool ${variable:+valeur}
$ echo "Si bool=1 alors j'affiche :
${bool:+true}"
Si bool=1 alors j'affiche :
$
$ nombre=56
$ echo ${nombre:?"nombre indefini"}
56
$ unset nombre
$ echo ${nombre:?"nombre indefini"} ${variable:?message}
-bash: nombre: nombre indefini
Syntaxe Commande
script3.sh
#!/bin/bash
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12}
exit 0
$ ./script3.sh un deux trois quatre cinq six sept huit neuf dix onze
douze
un deux trois quatre cinq six sept huit neuf dix onze douze
$
Les variables d’environnement
Variables d’environnement courantes utilisées par de nombreuses commandes (ainsi
que par le Shell) :
Opérateurs arithmétiques
$nb1 + $nb2 Addition
$nb1 - $nb2 Soustraction
$nb1 \* $nb2 Multiplication
$nb1 / $nb2 Division
$nb1 % $nb2 Modulo
Opérateurs de comparaison
$nb1 \> $nb2 VRAI si $nb1 est strictement supérieur à $nb2
$nb1 \>= $nb2 VRAI si $nb1 est supérieur ou égal à $nb2
$nb1 \< $nb2 VRAI si $nb1 est strictement inférieur à $nb2
$nb1 \<= $nb2 VRAI si $nb1 est inférieur ou égal à $nb2
$nb1 = $nb2 VRAI si $nb1 est égal à $nb2
$nb1 != $nb2 VRAI si $nb1 est différent de $nb2
Opérations arithmétiques
La commande expr:
Syntaxe : expr $nbr1 operateur $nbr2
expr $chaine : expression_reguliere
Opérateurs logiques
$chaine1 \& $chaine2 VRAI si les 2 chaines sont vraies
$chaine1 \| $chaine2 VRAI si l'une des 2 chaines est vraie
Opérateurs divers
-$nb1 Opposé de $nb1
\( expression \) Regroupement
$chaine : expression_reguliere Compare la chaine avec l'expression régulière
Exemple: $ nb=3
$ expr $nb + 5 $ nb=10
8 $ expr $nb % 3
$ expr $nb \* 6 1
18 $ expr $nb - -5
$ expr $nb / 2 15
1
Opérations arithmétiques
La commande expr:
Pour récupérer le résultat dans une $ nb2=`expr $nb - 2`
$ echo $nb2
variable: (nb=10)
8
$ nb=2
Résultat d'une comparaison VS $ expr $nb \>= 1
valeur du code de retour : 1 Résultat de la comparaison
$ echo $?
0 Résultat du code de retour
$ expr $nb \>= 3
0 Résultat de la comparaison
$ echo $?
1 Résultat du code de retour
Opérations arithmétiques
La commande (( )):
La commande (( )) dispose de nombreux avantages par rapport à la commande expr:
Opérateurs supplémentaires.
Les variables n'ont pas besoin d'être préfixées par le symbole $.
Les caractères spéciaux du Shell n'ont pas besoin d'être protégés par des antislashs.
Les affectations se font dans la commande. Alors son exécution est plus rapide.
Opérateurs arithmétiques
nb1 + nb2 Addition
nb1 - nb2 Soustraction
nb1 * nb2 Multiplication
nb1 / nb2 Division
nb1 % nb2 Modulo
Opérateurs de comparaison
nb1 > nb2 VRAI si $nb1 est strictement supérieur à $nb2
nb1 >= nb2 VRAI si $nb1 est supérieur ou égal à $nb2
nb1 < nb2 VRAI si $nb1 est strictement inférieur à $nb2
nb1 <= nb2 VRAI si $nb1 est inférieur ou égal à $nb2
nb1 = nb2 VRAI si $nb1 est égal à $nb2
nb1 != nb2 VRAI si $nb1 est différent de $nb2
Opérations arithmétiques
La commande (( )):
Opérateurs travaillant sur les bits
~nbr1 Complément à 2
nbr1 >> nbr2 Décalage sur nbr1 de nbr2 bits à droite
nbr1 << nbr2 Décalage sur nbr1 de nbr2 bits à gauche
nbr1 & nbr2 ET bit à bit
nbr1 | nbr2 OU bit à bit
nbr1 ^ nbr2 OU exclusif bit à bit
Opérateurs logiques
!expression Inverse la valeur de vérité de expression
&& ET
|| OU
Opérateurs divers
-nbr1 Opposé de nbr1
nbr1 = expression Assignement
(expression) Regroupement
binop représente l'un des opérateurs suivants : +, -, /, *, %,
nbr1 binop= nbr2
>>, <<, &, |, ^. Equivalent à nbr1 = nbr1 binop nbr2
Opérations arithmétiques
La commande (( )):
Exemple: $ nbr1=10
$ ((nbr1=nbr1+10))
$ echo $nbr1
20
$ nbr1=10
$ ((nbr1+=10))
$ echo $nbr1
20
$ nbr1=5
$ nbr2=6
$ ((nbr1>nbr2))
$ echo $?
1 Code retour 1 (faux) car nbr1 n'est pas supérieur à nbr2
$ ((nbr1<nbr2))
$ echo $?
0 Code retour 0 (vrai) car nbr1 est inférieur à nbr2
Opérations arithmétiques
La commande let
La commande let est équivalente à (( )) . Exemples:
$ nbr1=5
$ let "nbr1=nbr1*3"
$ echo $nbr1
15