======Traitement sur les variables======
======Récupérer le répertoire courant sans le chemin complet======
resultat=${PWD##*/}
======Longueur de la variable======
VAR=azerty
echo ${#VAR}
6
======Nombre éléments d'un tableau======
VAR=( un deux trois quatre )
echo ${#VAR[@]}
4
======Longueur d'un élément d'un tableau=====
VAR=( un deux trois quatre )
echo ${#VAR[0]}
2
======renvoi la chaîne du nième caractère et jusqu'à la fin ( la première lettre = 0) ====
{| border="2" style="text-align: center; font-weight: bold;"
! style="width: 25%"| chaîne caractères || a || z || e || r || t || y || u || i
|-
! numéro de caractère || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7
|}
\\
VAR=azertyui
echo ${VAR:3}
rtyui
======extraire une chaine de caractères en indiquant le numéro de caractère du début et la longueur======
avec ${Variable:debut:longueur} \\
debut=3\\
longueur=4\\
{| border="2" style="text-align: center; font-weight: bold;"
! style="width: 25%"| chaine caracteres || a || z || e || r || t || y || u || i || o || p
|-
! numero de caractère || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9
|-
!decompte de la longueur || - || - || - || 1 || 2 || 3 || 4 || - || - || -
|-
! || || || || r || t || y || u || || ||
|}
VAR=azertyuiop
echo ${VAR:3:4}
rtyu
======extraire une chaine de n caractères en partant de la fin====
avec ${Variable:fin:longueur} \\
fin=(-8)\\
longueur=5\\
{| border="2" style="text-align: center; font-weight: bold;"
! style="width: 25%"| chaine caracteres || a || z || e || r || t || y || u || i || o || p
|-
! numero de caractère || -10 || -9 || -8 || -7 || -6 || -5 || -4 || -3 || -2 || -1
|-
!decompte de la longueur || - || - || 1 || 2 || 3 || 4 || 5 || - || - || -
|-
! || || || e || r || t || y || u || || ||
|}
VAR=azertyuiop
echo ${VAR:(-8):5}
ertyu
======Suppression de la plus courte chaîne recherché, en partant du début====
{| border="2" style="text-align: center; font-weight: bold;"
! style="width: 25%"| chaine caractères || a || z || e || r || E || c || h || e || r || c || h || e || t || y || U
|-
! recherche et suppression || - || - || - || r || E || c || h || e || r || c || h || e || - || - || -
|-
! résultat || a || z || e || || || || || || || || || || t || y || U
|}
\\
VAR=azerEcherchetyu
${VAR#rEcherche}
azetyU
\\
le caractère "*" est un caractère générique qui remplace 0 ou plusieurs caractères différents.
\\
VAR=AZERTYUIOPQSD
echo ${VAR#A*R} # A*R correspond ici a AZER
TYUIOPQSD
\\
[AB] signifie le caractère A ou le caractère B\\
[AB[AB][AB][AB] signifie 4 caractères ( A ou B) qui se suivent
\\
VAR=ABABAB_TOTO
echo ${VAR#[AB][AB][AB][AB]}
AB_TOTO
\\
======Suppression de la plus longue chaine, a partir du début====
VAR=ABCABC123ABCabc
echo ${VAR##A*C}
abc
======Recherche et suppression de la plus courte chaîne en partant de la fin====
VAR=abcABC123ABCabc
echo ${VAR%b*c}
abcABC123ABCa
======Suppression de la plus longue chaîne en partant de la fin====
${VAR%%recherche}:
\\
VAR=abcABC123ABCabc
echo ${VAR%%b*c}
a
======chercher et remplacer une sous-chaîne dans une variable====
Il y a 2 possibilités: la première occurrence ou toutes les occurrences:
${VAR/recherche/remplacé par} # première occurrence
${VAR//recherche/remplacé par} # toutes les occurrences
\\
Dans tous les cas, c'est la sous-chaîne la plus grande correspondant à "recherche" qui sera remplacée. \\
VAR=abcABC123ABCabc
echo ${VAR/b*c/Z}
aZ
=======chercher et remplacer la première sous-chaîne d'une variable===
VAR=abcABC123ABCabc
echo ${VAR/#abc/---}
---ABC123ABCabc
=======chercher et remplacer dernière sous-chaîne d'une variable===
VAR=abcABC123ABCabc
echo ${VAR/%abc/---}
abcABC123ABC---
======Renvoyer une valeur de substitution lorsque la variable n'existe pas====
si VAR est défini (avec une valeur ou avec nul), on retourne sa valeur, y compris nul, sinon, si VAR est indéfini, on retourne défaut, sans changer ni la valeur, ni l’état de VAR.
unset VAR # on supprime VAR si elle existe
echo ${VAR-defaut}
defaut
Si l'on souhaite que la valeur retournée soit non nul, on peut utiliser la syntaxe : **${VAR:-defaut}**.
Par exemple :
declare VAR # VAR existe, mais est nul
echo ${VAR-valeur_par_defaut}
echo ${VAR:-valeur_par_defaut}
valeur_par_defaut
Pour substituer une valeur (ici une chaîne: defaut) a une variable indéfinie:\\
${VAR-defaut}
\\
Pour substituer une valeur (ici une chaîne: defaut) a une variable indéfinie ou nul: \\
${VAR:-defaut}
\\
Cette syntaxe ne défini pas ou ne modifie pas la valeur de VAR.
======Définir une variable uniquement si elle est indéfinie======
définir VAR si elle n'est pas définie :\\
unset VAR # VAR n'est pas défini
echo ${VAR=valeur_par_defaut}
valeur_par_defaut
\\
======Définir une variable uniquement si elle est indéfinie ou nul======
définir VAR lorsque nul :\\
VAR= # défini VAR a nul
echo ${VAR:=valeur_par_defaut}
valeur_par_defaut
\\
======remplacer momentanément la valeur d'une variable non nul======
VAR=valeur_1
# autre_valeur
echo "${VAR+autre_valeur}"
# on defini VAR a nul
VAR=
echo "${VAR+autre_valeur}"
echo "${VAR:+autre_valeur}"
======message d'erreur si la valeur est nulle ou si VAR n'est pas définie======
unset VAR # VAR n'est pas définie
echo ${VAR?pas definie} # -bash: VAR: pas definie (sur stderr)
VAR= # définie mais vide, null
echo ${VAR?pas definie} # rien, valeur nulle autorisée
echo ${VAR:?valeur nulle} # -bash: VAR: pas definie (sur stderr)