======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)