Scripts bashVariablesDéfinitionChaînes de caractèresArgumentsCommande readCommande printfArithmétiqueConditionscomparaison numériqueComparaison de chaînes de caractèresTest de chaîne vide Test sur les fichiersItérationsCommande forItération sur les mots d'une ligneItération sur tous les arguments du scriptItération sur les fichiers du dossier courantItération sur une variable incrémentéeCommande while
1couleur=rougeAttention : pas d'espace autour du signe = !
Rendre la variable globale : export
xxxxxxxxxx11export couleur=rougeEvaluation de la variable $
xxxxxxxxxx21echo $couleur2rougeSuppression de variable unset
xxxxxxxxxx11unset couleurCode d'erreur de la dernière commande $?
Evaluer les variables de la chaîne " ... " (guillemets)
xxxxxxxxxx21echo "la maison $couleur"2la maison rougeNe pas évaluer les variables ' ... ' (apostrophes)
xxxxxxxxxx21echo 'La maison $couleur'2La maison $couleurExécuter le contenu : accent grave
xxxxxxxxxx31dossier=`pwd`2echo "vous êtes dans le dossier : $dossier"3Vous êtes dans le dossier : /home/user/documents| symbole | description |
|---|---|
$# | nombre d'arguments reçus par le script |
$0 | nom du script |
$n | argument reçu en position |
${m} | argument reçu en position |
$* ou $@ | liste de tous les arguments |
readaffectation des variables à partir de l'entrée standard.
xxxxxxxxxx11read <var1> <var2> ...L'option -p permet d'afficher un texte avant d'entrer la valeur :
xxxxxxxxxx11read -p "Entrez une valeur : " <var1>printfaffichage d'un message (plus complète que echo).
xxxxxxxxxx11printf [-v var] <text> [arg]Argument -v enregistre le texte dans la variable var au lieu de l'afficher.
Exemple :
xxxxxxxxxx41fruit=pomme; qte=4; prix=3.52printf "%s %3d %3.2f\n" $fruit $qte $prix3----4pomme 004 3.50Par défaut, les variables sont de type texte.
variable de type entier : declare -i
xxxxxxxxxx11declare -i x=10La notation ((...)) permet d'évaluer l'expression arithmétique contenant des opérateurs, des variables ($ facultatif, sauf pour arg), des espaces.
xxxxxxxxxx41((x = x+x+1))2echo $x3----421Nombre flottants : bc
commande if exécute des commandes en fonction d'une condition.
xxxxxxxxxx41if <cond>2then3 <commandes>4fixxxxxxxxxx61if <cond>2then3 <commandes1>4else5 <commandes2>6fixxxxxxxxxx91if <cond1>2then3 <commandes1>4elif <cond2>5then6 <commandes2>7else8 <commandes3>9fixxxxxxxxxx11[[ <item1> <op> <item2> ]]opérateurs <op>:
-eq-ne-lt-le-gt-gexxxxxxxxxx11[[ <str1> <op> <str2> ]]<str2> peut contenir des métacaractères.
opérateurs <op> :
== chaînes égales!= chaînes différentes=~ comparaison avec regexxxxxxxxxxx11[[ <op> <str> ]]Opérateurs <op> :
-z condition vraie si chaîne vide-n condition vraie si chaîne non videxxxxxxxxxx11[[ <op> <file> ]]opérateurs <op> :
-e vrai si le fichier existe-f vrai si c'est un fichier ordinaire-d vrai si c'est un dossier-s vrai si fichier vide-w vrai si l'utilisateur courant a accès en écritureforLa commande for répète une suite de commandes pour une liste d'éléments (arguments, mots d'une ligne, fichier d'un dossier, variable incrémentée, ...)
41for <var> in <text>2do3 <commands>4done<text> : ligne de texte (ou variable)
<var> : variable qui contient à chaque itération un mot du texte
Exemple :
xxxxxxxxxx101for var in je mange une pomme2do3 echo $var4done5
6#---- résultat ----7# je8# mange9# une10# pomme41for <var>2do3 <commands>4done41for <var> in <filename>2do3 <commands>4done<var> : variable qui contient à chaque itération le nom d'un fichier
<filename> : nom de fichier avec métacaractères (p.ex. *.jpg pour itérer sur les fichier images JPG)
41for ((<init>; <comp>; <inc>))2do3 <commands>4doneLa syntaxe de <init>, <comp> et <inc> est similaire à celle du langage C.
Exemple :
61sum=02for ((i=0; i<10; i++))3do4 ((sum+=i))5done6echo Somme: $sumwhileLa commande while répète une suite d'instructions tant qu'une certaine condition est vraie.
41while <cond>2do3 <commands>4doneLa condition <cond> peut être :