Script Shel (Cours) Flashcards

(15 cards)

1
Q

Comment dans un script shell accède - t -on aux différent argument ?

A

$0, $1, . . . accès aux arguments

$# nombre d’arguments

$$ PID du shell

$! PID du dernier processus lancé en arrière-plan

$? code de retour de la commande précédente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quelle est la syntaxe de la structure conditionelle “if” en shell et comment fonctionne -t -elle ?

A

Syntaxe :

if cmd args
then

else

fi

Fonctionnement :
*Test effectué par la commande cmd
n’importe quelle commande (ou groupe de commandes)

*code de retour = 0 ⇝ branche then exécutée
*code de retour̸ = 0 ⇝ branche else exécutée
*Branche else facultative
*Syntaxe sur une seule ligne possible ne pas oublier les ;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quelle est la syntaxe des switch case en shell ? COmment fonctionne - t - elle ?

A

Syntaxe :

case value in
pattern1)

;;
pattern2|pattern3)

;;

esac

Fonctionnement :
1) Pour la valeur :
*variable $VAR
*texte
*résultat d’un calcul $(( ))
*résultat d’une sous-commande $( )
2) Pour les motifs : pattern
~ = HOME si en début de motif
? = 1 caractère
* = 0 ou plusieurs caractères
[m1 . . . mk ] = un carac. parmi les mi
* Seule la première branche
valide est exécutée

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

QUelle est la syntaxe des “While” en shell comment fonctionnent - t - ils ?

A

Syntaxe :

while cmd args ;
do

done

Fonctionnement :
*Test effectué par la commande cmd
*n’importe quelle commande (ou groupe de commandes)
*code de retour = 0 ⇝ corps de boucle exécuté + nouveau test
*code de retour̸ = 0 ⇝ sortie de boucle
Syntaxe sur une seule ligne possible

!!!!!! ne pas oublier les ; !!!!!

*break = saut à la sortie de boucle
*continue = saut au niveau du test

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

QUelle est la syntaxe des “For” en shell comment fonctionnent - t - ils ?

A

Syntaxe :

for var in list
do

done

Fonctionnement :
*Pas de $ entre for et in
*var prend successivement chacune des valeurs données dans list :
suite de motifs séparés par des blancs
*résultat d’une sous-commande $( )
*Syntaxe sur une seule ligne possible ne pas oublier les ;
*break = saut à la sortie de boucle
*continue = passage à la prochaine valeur directement

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Que fais la fonction “test” ?

A

test arg1 arg2 … argk

Expression booléenne donnée par arg1 arg2 . . . argk évaluée
⇝ code de retour =
0 si expression évaluée à vrai
1 sinon

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Avec la fonction “test” quels sont les argument pour effectuer des comparaisons sur les chaine de caractère ?

A

Comparaison de deux chaînes : str1 ⋄ str2
= pour égalité
!= pour différence
< pour inférieur (strict) lexicographiquement
> pour supérieur (strict) lexicographiquement

Test de vacuité : ⋄ str
-z pour tester si la chaîne est vide
-n pour tester si la chaîne est non vide

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Avec la fonction “test” quels sont les argument pour effectuer des comparaisons sur les entiers ?

A

Comparaison de deux entiers : int1 ⋄ int2
-eq pour égalité
-ne pour différence
-lt pour inférieur strict
-le pour inférieur ou égal
-gt pour supérieur strict
-ge pour supérieur ou égal

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Quels sont les autres options interessantes pour la fonction “test” ?

A

Vérifier la nature d’un fichier : ⋄ file
-e pour existence
-f pour vérifier que file est un fichier régulier
-d pour vérifier que file est un répertoire
-h pour vérifier que file est un lien symbolique

Vérifier les droits sur un fichier : ⋄ file
-r pour accès en lecture
-w pour accès en écriture
-x pour accès en exécution

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Donner en shell les opérateurs booleans

A

! expr négation de expr
ne pas oublier les espaces autour de !
expr1 -o expr2 OU logique
expr1 -a expr2 ET logique
( expr ) pour parenthéser si besoin

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quelles sont les commandes built-in en shell ?

A

Commandes built-in
Commande built-in = fournie par le shell
pas d’exécutable dans le PATH en général
documentation dans le man du shell
cd, pwd, export, fg, bg
mais pas ls, find, firefox
Certaines commandes sont recodées dans le shell :
+ d’options supportées
meilleures perfs
echo, test

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Comment fonctionne en shell la commande built-in “read” ?

A

sh$ read var1 … vark
sh$ read -p message var1 … vark

lecture d’une ligne sur stdin
découpage de cette ligne selon les blancs espace, tab
vari reçoit le ie mot (s’il existe) 1 ≤ i < k
vark reçoit le reste de la ligne

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Comment fonctionne en shell les commandes built-in principales ?

A

exec cmd args
exécute la commande cmd avec les arguments args
l
e shell est remplacé par cmd
pas de nouveau processus

exit n
*arrête le shell avec n comme code de retour
*code de retour = 0 si omis

readonly v
*la variable v devient non modifiable

unset v
*supprime la variable v

set ±opt args
*1 change les options du shell
*2 change les arguments $1, $2, . . .

shift n
*décale les arguments de n crans
*décalage de 1 par défaut $2 devient $1, etc.

. file . = source, en mode interactif
*le contenu de file est exécuté

wait pid
*attend l’arrêt du programme de PID pid

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Quelle est la syntaxe pour créer ses propres fonctions en shell ?

A

Syntaxe :

fctname() {
local var
cmd1 args1
cmd2 args2

return n
}

Fonctionnement :
Gestion des arguments :
*aucune déclaration entre les ( )
*accès via $1, $2, . . .

Variables globales accessibles $VAR

Mot-clé local pour déclarer des variables locales

Mot-clé return pour sortir de la fonction
*en précisant le code retour n
si aucun return, code de retour = celui de la
*dernière commande exécutée
*ne pas confondre avec exit

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quelles sont els variables spéciales pour les commandes en shell ?

A

$i
*accès à l’argument numéro i
*mettre des { } à partir de 10 ${10}, ${11}, . . .
#et trouver une bonne raison d’avoir autant d’arguments !

$#
*donne le nombre d’arguments
*utile dans les tests

”$@”
*remplacé par la liste des arguments
gestion correcte des espaces pas comme $ et $@
*utile dans les tests
#même comportement au niveau du shell et dans une fonction
sauf pour $0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly