0% ont trouvé ce document utile (0 vote)
9 vues2 pages

Memo Shell Scripts

Transféré par

iavotrandria
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues2 pages

Memo Shell Scripts

Transféré par

iavotrandria
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Reprise du mémo shell scripts d'Yves Bailly, 2002 Programmation système HEPIA

Les caractères suivants possèdent une signification : Exemples d'enchaînement de commandes


; séparateur de commande date ; pwd exécute date puis affiche le
& exécution en arrière plan répertoire courant
( ) regroupement de commande date --date affiche la date du dernier boot.
{ } bloc de commandes (pour les fonctions) ="@$ (cat
| tube (pipe en anglais) /proc/stat | grep
> < symboles de redirections btime | cut -d ' '
?*[ ]~ ! caractères génériques pour les noms de -f 2)"
fichiers cat fichier.txt | affiche le nombre de lignes de
" ' \ chaînes de caractères wc -l fichier.txt
$ substitution test -f fichier && affiche le fichier si il existe
more fichier
Pour les chaînes de caractères
- Les caractères compris entre deux ' (apostrophes) sont test -f fichier || affiche « fichier incconnu » si
echo "fichier il n'existe pas
traités tels quels, sans signification particulière
inconnu"
- Les caractères compris entre deux " (guillemets) sont
traités tels quels, sauf pour $ et pour test -f fichier && affiche le fichier si il existe,
more fichier || sinon affiche « ficher
les autre ".
echo "fichier inconnnu »
inconnu".
Définition de motifs de paramètres fichiers :
* zéro ou plusieurs caractères
? Redirection de flux standards
exactement un caractère
cmd > fichier La sortie standard de cmd est
[abc...] ensemble de caractères. On
stockée dans fichier
peut définir un ensemble en
cmd < fichier fichier est envoyé dans
donnant les bornes séparées
l'entrée standard de cmd
par un tiret, par exemple
cmd >> fichier La sortie standard de cmd est
[a-z0-0] signifie « tout
caractère alphabétique rajoutée à fichier
cmd 2> fichier L'erreur standard est stockée
minuscule ou chiffre ».
[!abc...] caractère qui ne sont pas dans fichier
cmd 2>&1 Redirige l'erreur standard sur
dans l'ensemble.
{motif1,... choix multiple de motifs la sortie standard
motif2,...} Cmd > fichier 2>&1 Sortie et erreur standard sont
~nom répertoire personnel de stockées dans fichier
l'utilisateur nom cmd << texte Lit l'entrée standard jusqu'à
une ligne égale à texte
Exemples de motifs :
?a* tous les mots ayant 'a' en
Variables
deuxième caractère.
var="chaine" Affectation de la valeur
[!a-e]* tous les mots dont le premier
« chaine » à la variable var.
caractère n'est pas a,b,c,d ou
attention pas d'espace autour
e.
du"="
*{ab,cd} tous les mots finissant par
var2=$var utilisation de la variable $var
"ab" ou "cd".
affectée à var2
Exemple d'utilisation de variables
Enchaînement de plusieurs commandes :
x=10 ; echo "la affiche "la variable $x
cmd1 ; cmd2 exécute cmd1 puis cmd2
variable \$x contient 10"
cmd1 | cmd2 tube, la sortie standard de contient $x"
cmd1 est redirigée dans
l'entrée de cmd2
Variables prédéfinies
cmd1 $(cmd2) la sortie standard de cmd2 est $0
le nom sous lequel le script est
l'argument (option ou
exécuté.
paramètre) $1, ... $9 les neufs premiers paramètres de
donné à cmd1
ligne de commande.
cmd1 && cmd2 exécute cmd2 si et seulement $@
liste séparée par des espaces de
si cmd1 s'est déroulé
tous les paramètres.
correctement (valeur de retour
$# nombre de paramètres.
== 0)
$? code de retour de la dernière
cmd1 || cmd2 n'exécute cmd2 que si cmd1
commande exécutée.
échoue (valeur de retour
$$ identifiant du processus.
différente de zéro)
Reprise du mémo shell scripts d'Yves Bailly, 2002 Programmation système HEPIA

$! identifiant de la dernière La commande test


commande exécutée en arrière La commande test est indispensable pour l'exécution de
plan. conditionnelle et de boucles. Son code de retour dépends de
$UID identifiant de l'utilisateur qui a la comparaison de chaînes de caractères, de nombres ou
lancé le script bien de l'existence de fichiers. Elle est souvent abrégée par
$HOME le répertoire personnel de des [] .Pour plus de détails voir "help test"
l'utilisateur
$PWD répertoire courant [ -d fichier ] le fichier est un répertoire
... de nombreuses autres ($PATH, $TERM, ...) [ -e fichier ] le fichier existe
[ -f fichier ] le fichier est un ficher régulier
Structures de contrôle [ -r fichier ] le fichier existe et est lisible
if test ; case chaine while test ; [ s1 = s2 ] la chaîne s1 est égale à la chaîne
then in do s2
commandes motif1) commandes [ s1 != s2 ] la chaîne s1 est différente de la
fi done chaîne s2
if test ; commandes until test ; [ n1 -eq n2 ] le nombre n1 est égal à n2
then ;; do [ n1 -ge n2 ] le nombre n1 est supérieur ou
commandes motif2) commandes égal à n2
else done [ n1 -gt n2 ] le nombre n1 est supérieur à n2
commandes commandes [ n1 -ne n2 ] le nombre n1 est différent de n2
fi ;; [ c1 ] && [ c2 ] condition c1 et condition c2
if test1 ; * ) for i in [ c1 ] || [ c2 ] condition c1 ou condition c2
then commandes liste ; do
commandes ;; commandes
elif test2 ; esac done
la chaîne est Les fonctions
then
Les fonctions se comportent comme une commande
commandes comparée aux liste est une suite
else motifs du choix externe, et reconnaissent les arguments positionnels ($1,
de mots séparée par
commandes multiple. La $2,...) comme les arguments des fonctions lors de leur
des espaces ou des
fi dernière est le appel. Les fonctions bash ne retourne jamais de valeur, à
retours à la ligne
motif par défaut. part peut-être par la commande echo.
("\n")
Exemple la fonction fact() calcule la factorielle d'un
Calcul d'expressions arithmétiques nombre passé en paramètre :
Bash permet d'évaluer certaines expressions arithmétique
tout en utilisant des variables avec la commande let ou enfunction fact
entourant l'expression dans $((...)). Dans l'expression,{
les variables peuvent être utilisées sans le $ devant le nom. let n=$1
Les opérations les plus communes sont les suivantes, pour let res=1
plus de détails voir "help let". while [ $n -gt 1 ]; do
-,+, *, /, %, ** Respectivement les opérations let res=res*n
moins (unaire et binaire), plus let n=n–1
multiplication, division, done
modulo et puissance echo $res
&, ^, | ET, XOR et OR binaires }
<, >, ==, = ! Inférieur, supérieur, égal, fact 3
différent.
= affectation
<<, >> Décalage binaire vers la
gauche ou la droite
!, ~ Négation logique et binaire
b#<nombre> Expression d'un nombre en
base b
Exemple
a=$((2#011^2#100)) La variable a est égale à 7

Vous aimerez peut-être aussi