Config

bash cheatsheet

Début de fichier

#!/usr/bin/env bash

Explication (par Tom “zdimension” Niget): Sur Unix/Linux, quand lance un fichier, l’OS va lire le début du fichier pour détecter une signature en entête.

Par exemple, si le fichier commence par #!/usr/bin/env bash, il va lancer la commande : /usr/bin/env bash <nom_du_fichier> de manière que le programme se lance en tant que programme exécutable.

echo -e "Première ligne\nDeuxième ligne"

Sortie :

Première ligne
Deuxième ligne

Arguments de la ligne de commande

echo -e "nb arguments : $# (argc en C)"
echo -e "arguments : $* (argv en C)"
echo -e "premier argument : $1"

Utilisation :

./script.sh arg1 arg2 arg3

Sortie :

nb arguments : 3 (argc en C)
arguments : arg1 arg2 arg3 (argv en C)
premier argument : arg1

Boucles for

foreach

for i in $*
do
    echo $i
done

Utilisation :

./script.sh arg1 arg2 arg3

Sortie :

arg1
arg2
arg3

for i

for i in {1..3}
do
    echo $i
done

Sortie :

1
2
3

Boucles while

i=0
while [ $i -lt 3 ]
do
    echo $i
    i=$((i+1))
done

Sortie :

0
1
2

Conditions

if [ $# -eq 0 ]
then
    echo "Aucun argument"
elif [ $# -eq 1 ]
then
    echo "Un seul argument"
else
    echo "Plusieurs arguments"
fi

Table de conversion :

bash Symbole Définition
-eq = égal à
-ne != différent de
-gt > supérieur à
-lt < inférieur à
-ge >= supérieur ou égal à
-le <= inférieur ou égal à

Fonctions

function maFonction(){
    echo "Fonction !"
}

maFonction

Sortie :

Fonction !

Fonctions avec arguments

function maFonction(){
    echo "Fonction avec $# arguments"
}

maFonction arg1 arg2 arg3

Sortie :

Fonction avec 3 arguments

Listes

ma_liste = ( "a" "b" "c d" )

for thing in "${ma_liste[@]}" ; do
  echo "$thing"
done

Sortie :

a
b
c d

Certains shells comme ash ne supportent pas les listes, on peut donc utiliser une string, le for sépare les éléments par des espaces.

Cf. Linux/Alpine/Readme.md#ash et listes