#!/bin/<nom_shell>
. Les instructions peuvent varier d'un shell à un autre.<nomVariable>='<valeur>'
echo
echo -e "texte\ntexte à la ligne"
. Il faut utiliser l'option -e pour echo
et ensuite ajouter \n à l'endroit du retour à la lignemessage="Bonjour !"
echo $message
Attention : Le choix des guillemets est très important !
Les guillemets double "" vont interpréter ce qu'il y a dans entre elles, comme le contenu des variables, là ou les guillemets simples '' ne vont rien interpréter.
Les guillemets inversés `` vont permettre d'executer des commandes.
Exemples :
# Avec guillemets simples :
message="bonjour"
echo 'le message est : $message'
# Le résultat sera : le message est : $message
# Avec guillemets doubles :
message="bonjour"
echo "le message est : $message"
#Le résultat sera : le message est : bonjour
# Avec guillemets inversés
message=`pwd`
echo $message
# Le résultat sera : /chemin/actuel
read nomVariable1 nomVariable2 ...
read -p 'Entrez votre nom : ' nom
read -p 'Entrez votre login (5 caractères max) : ' -n 5 nom
read -p 'Entrez le code de désamorçage de la bombe (vous avez 5 secondes) : ' -t 5
read -p 'Entrez votre mot de passe : ' -s pass
let
Exemple :
let "a = 5"
Opération | Opérateur |
---|---|
Addition | + |
Soustraction | - |
Multiplication | * |
Division | / |
Puissance | ** |
Modulo | % |
Nous pouvons appeler le script de cette façon : ./nom-script param1 param2 paramn
Suite à cela, des variables sont automatiquement créées :
$#
: Contient le nombre de paramètres$0
: Contient le nom du script exécuté$1
: Contient le premier paramètre$9
: Contient le 9ème paramètreSi nous avons besoin de traiter plus de 9 paramètres, il faudra alors décaler les variables des paramètres avec la commande
shift
.
Exemple :
#!/bin/bash
echo "Le paramètre 1 est $1"
shift
echo "Le paramètre 1 est maintenant $1"
Le résultat sera :
$ ./variables.sh param1 param2 param3
Le paramètre 1 est param1
Le paramètre 1 est maintenant param2
variable=('valeur0' 'valeur1' 'valeur2')
${variable[numéro_case]}
variable[2]='valeur2'
Pour afficher l'ensemble du tableau, on utilise echo ${variable[*]}
Syntaxe :
#Syntaxe 1 :
if [ test ]
then
echo "C'est vrai"
fi
#Syntaxe 2 :
if [ test ]; then
echo "C'est vrai"
fi
Attention : Il est important de respecter les espaces entre les crochets du test. On écrit [ test ] et non [test].
Syntaxe :
if [ test ]
then
echo "C'est vrai"
else
echo "C'est faux"
fi
Syntaxe :
if [ test ]
then
echo "Le premier test a été vérifié"
elif [ autre_test ]
then
echo "Le second test a été vérifié"
elif [ encore_autre_test ]
then
echo "Le troisième test a été vérifié"
else
echo "Aucun des tests précédents n'a été vérifié"
fi
#!/bin/bash
if [ $1 != $2 ]
then
echo "Les 2 paramètres sont différents !"
else
echo "Les 2 paramètres sont identiques !"
fi
Condition | Signification |
---|---|
$chaine1 = $chaine2 |
Vérifie si les deux chaines sont égales |
$chaine1 != $chaine2 |
Vérifie si les deux chaines sont différentes |
-z $chaine |
Vérifie si la chaine est vide |
-n $chaine |
Vérifie si la chaine n'est pas vide |
On peut se servir de la condition
-z
pour vérifier si un paramètre existe
Exemple :
#!/bin/bash
if [ -z $1 ]
then
echo "Pas de paramètre"
else
echo "Paramètre présent"
fi
Condition | Signification |
---|---|
$num1 -eq $num2 |
Vérifie l'égalité |
$num1 -ne $num2 |
Vérifie l'inégalité |
$num1 -lt $num2 |
Vérifie si num1 est plus petit que num2 |
$num1 -le $num2 |
Vérifie si num1 est plus petit ou égal à num2 |
$num1 -gt $num2 |
Vérifie si num1 est plus grand que num2 |
$num1 -ge $num2 |
Vérifie si num1 est plus grand ou égal à num2 |
Exemple :
#!/bin/bash
if [ $1 -ge 20 ]
then
echo "Vous avez envoyé 20 ou plus"
else
echo "Vous avez envoyé moins de 20"
fi
Condition | Signification |
---|---|
-e $nomFichier |
Vérifie si le fichier existe |
-d $nomFichier |
Vérifie si le fichier est un répertoire |
-f $nomFichier |
Vérifie si le fichier est un fichier |
-L $nomFichier |
Vérifie si le fichier est un lien symbolique |
-r $nomFichier |
Vérifie si on peut lire le fichier |
-w $nomFichier |
Vérifie si on peut écrire sur le fichier |
-x $nomFichier |
Vérifie si on peut exécuter le fichier |
&&
: ET Logique, les deux tests doivent être vrais||
: OU Logique, au moins l'un des tests est vrai#!/bin/bash
#Syntaxe basique :
case $1 in
"Bruno")
echo "Salut Bruno !"
;;
"Michel")
echo "Bien le bonjour Michel"
;;
"Jean")
echo "Hé Jean, ça va ?"
;;
*)
echo "J'te connais pas, ouste !"
;;
esac
# Syntaxe un peu plus complexe
case $1 in
"Chien" | "Chat" | "Souris")
echo "C'est un mammifère"
;;
"Moineau" | "Pigeon")
echo "C'est un oiseau"
;;
*)
echo "Je ne sais pas ce que c'est"
;;
esac
# Syntaxe 1 :
while [ test ]
do
echo 'Action en boucle'
done
# Syntaxe 2
while [ test ]; do
echo 'Action en boucle'
done
Exemple :
#!/bin/bash
while [ -z $reponse ] || [ $reponse != 'oui' ]
do
read -p 'Dites oui : ' reponse
done
Dans ce genre de situation, nous pouvons remplacer
while
paruntil
qui signifie "Jusqu'à ce que"
Attention : le FOR ne se comporte pas du tout de la même façon que dans les autres langages tel que PHP ou C#. Il est utilisé pour parcourir une liste de valeurs.
for variable in 'valeur1' 'valeur2' 'valeur3'
do
echo "La variable vaut $variable"
done
Exemple pour renommer les fichiers par un ls
:
#!/bin/bash
for fichier in `ls`
do
mv $fichier $fichier-old
done
# déclaration méthode 1
maFonction ()
{
bloc d’instructions
}
#appel de ma fonction
maFonction
# déclaration méthode 2
function maFonction
{
bloc d’instructions
}
#appel de la fonction
maFonction