English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Lors de la définition d'une variable, le nom de la variable ne doit pas comporter de symbole dollar ($, les variables PHP en ont besoin), par exemple :
your_name="w"3codebox.com"
Attention, il ne peut pas y avoir d'espaces entre le nom de la variable et l'égal, ce qui est différent de toutes les langues de programmation que vous connaissez. De plus, le nom des variables doit suivre les règles suivantes :
Les noms peuvent ne contenir que des lettres anglaises, des chiffres et des traits de soulignement, et le premier caractère ne peut pas commencer par un chiffre.
Il ne peut pas y avoir d'espaces à l'intérieur, mais vous pouvez utiliser des traits de soulignement (_).
Ne pas utiliser de symboles de ponctuation.
Ne pas utiliser les mots-clés de bash (vous pouvez consulter la commande help pour voir les mots-clés réservés).
Voici des exemples de noms de variables Shell valides :
w3codebox LD_LIBRARY_PATH _var var2
Nom de variable invalide :
?var=123 user*name=w3codebox
En plus de l'assignation explicite directe, vous pouvez également assigner une valeur à une variable avec des instructions, par exemple :
for file in `ls /etc` ou for file in $(ls /etc)
Les instructions ci-dessus feront /Boucler les noms de fichiers dans le répertoire sous etc.
Pour utiliser une variable définie, il suffit d'ajouter le symbole dollar ($) devant le nom de la variable, par exemple :
your_name="qinjx" echo $your_name echo ${your_name}
Les crochets autour du nom de la variable sont optionnels, il est permissible de les ajouter ou non, les ajouter est destiné à aider l'interpréteur à identifier les limites des variables, par exemple dans ce cas :
for skill in Ada Coffee Action Java; do echo "I am good at ${skill}Script" done
Si vous ne mettez pas de crochets autour du nom de la variable skill, et que vous écrivez echo "I am good at $skillScript", l'interpréteur prendra $skillScript pour une variable (valeur vide), et le résultat de l'exécution du code ne sera pas celui que nous attendions.
Il est recommandé de mettre tous les noms de variables entre crochets, c'est une bonne habitude de programmation.
Les variables déjà définies peuvent être redéfinies, par exemple :
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
Cela est légal de cette manière, mais attention, lors de la deuxième assignation, il ne faut pas écrire $your_name="alibaba", l'ajout du symbole dollar ($) n'est utilisé que lorsque l'on utilise une variable.
La commande readonly peut définir une variable comme variable en lecture seule, la valeur d'une variable en lecture seule ne peut pas être modifiée.
L'exemple suivant essaie de modifier une variable en lecture seule, et génère une erreur :
#!/bin/bash myUrl="https://www.google.com" readonly myUrl myUrl="https://fr.oldtoolbag.com"
L'exécution du script donne le résultat suivant :
/bin/sh: NAME: Ce variable est en lecture seule.
La commande unset peut supprimer les variables. Syntaxe :
unset variable_name
Les variables supprimées ne peuvent pas être utilisées à nouveau. La commande unset ne peut pas supprimer les variables en lecture seule.
Exemple
#!/bin/sh myUrl="https://fr.oldtoolbag.com" unset myUrl echo $myUrl
L'exécution de l'exemple ci-dessus n'aura aucun output.
Lors de l'exécution du Shell, il existe trois types de variables en même temps :
1) Variables localesLes variables locales sont définies dans le script ou la commande, et ne sont valides que dans l'instance actuelle du Shell, d'autres programmes démarrés par le Shell ne peuvent pas accéder aux variables locales.
2) Variables d'environnementTous les programmes, y compris les programmes démarrés par le Shell, peuvent accéder aux variables d'environnement, certains programmes ont besoin des variables d'environnement pour garantir leur bon fonctionnement. Le Shell peut également définir des variables d'environnement si nécessaire.
3) Variables ShellLes variables Shell sont des variables spéciales définies par le programme Shell. Une partie des variables Shell est des variables d'environnement, et une autre partie est des variables locales, ces variables assurent le bon fonctionnement du Shell
Les chaînes sont le type de données le plus couramment utilisé et le plus utile dans la programmation shell (à part les nombres et les chaînes, il n'y a pas d'autres types utiles), les chaînes peuvent être encadrées par des guillemets simples, des guillemets doubles, ou ne pas être encadrées.
str='this is a string'
Limites des chaînes de guillemets simples :
Tous les caractères dans les guillemets simples sont affichés tels quels, et les variables dans les chaînes de guillemets simples sont invalides;
Un guillemet simple ne peut pas apparaître seul dans une chaîne de guillemets simples (même après échappement), mais il peut apparaître en paires pour concaténer des chaînes.
your_name='w3codebox' str="Hello, je sais que vous êtes \"$your_name\"! \n" echo -e $str
Le résultat de la sortie est :
Hello, je sais que vous êtes "w3codebox"!
Avantages des guillemets doubles :
Les variables peuvent apparaître dans les guillemets doubles
Les caractères d'échappement peuvent apparaître dans les guillemets doubles
your_name="w"3codebox # Utilisation de guillemets doubles pour concaténation greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # Utilisation de guillemets simples pour concaténation greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3
Le résultat de la sortie est :
codebox !3codebox ! hello, w3codebox ! hello, w codebox !3hello, w
obtenir la longueur de la chaîne string="abcd" 4
extraire une sous-chaîne à partir de la chaîne 2 caractères à partir de 4 caractères :
string="w3codebox est un excellent site" echo ${string}1:4} # Sortie unoo
Attention:le valeur de l'index du premier caractère est 0.
recherche de caractères i ou o la position (quelle lettre apparaît en premier est calculée) :
string="w3codebox est un excellent site" echo `expr index "$string" io` # Sortie 4
Attention : Dans le script ci-dessus, ` est un guillemet oblique, pas un guillemet simple ', ne le confondez pas.
bash prend en charge les tableaux unidimensionnels (les tableaux multidimensionnels ne sont pas pris en charge) et n'a pas de limite pour la taille des tableaux.
Comme dans le langage C, les indices des éléments du tableau commencent par 0. Pour obtenir un élément du tableau, il faut utiliser un index, qui peut être un entier ou une expression arithmétique, et sa valeur doit être supérieure ou égale à 0.
Dans Shell, les parenthèses sont utilisées pour représenter les tableaux, et les éléments du tableau sont séparés par des "espaces". La forme générale de la définition d'un tableau est :
nom_du_tableau=(valeur1 valeur2 ... value n)
par exemple :
array_name=(value0 value1 value2 value3)
ou
array_name=( value0 value1 value2 value3 )
Il est également possible de définir séparément chaque composante du tableau :
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
Il est possible de ne pas utiliser des indices consécutifs, et la plage des indices n'est pas limitée.
Le format général pour lire une valeur d'un tableau est :
${nom_du_tableau[indice]}
par exemple :
valuen=${array_name[n]}
L'utilisation du symbole @ permet de récupérer tous les éléments d'un tableau, par exemple :
echo ${array_name[@]}
La méthode d'obtention de la longueur d'un tableau est la même que celle d'obtention de la longueur d'une chaîne, par exemple :
# Obtenir le nombre d'éléments de l'array length=${#array_name[@]} # Ou length=${#array_name[*]} # Obtenir la longueur d'un élément d'array lengthn=${#array_name[n]}
Les lignes commençant par # sont des commentaires et sont ignorés par l'interpréteur.
En ajoutant un symbole # à chaque ligne # Pour définir des commentaires multilignes, il suffit d'ajouter un symbole # à chaque ligne, comme ceci :
#-------------------------------------------- # C'est un commentaire # Auteur : Site de tutoriels de base # Site : fr.oldtoolbag.com # Slogan : Bien apprendre les bases, c'est la clé pour aller plus loin ! #-------------------------------------------- ##### Début de la zone de configuration de l'utilisateur ##### # # # Ici, vous pouvez ajouter des informations de description de script # # ##### Fin de la zone de configuration de l'utilisateur #####
Si, pendant le développement, vous rencontrez des segments de code longs qui doivent être annotés temporairement et désannotés plus tard, que faire ?
Il est trop difficile d'ajouter un symbole # à chaque ligne, vous pouvez donc encadrer ce segment de code à annoter entre des crochets, le définir comme une fonction, sans appeler cette fonction nulle part, ce qui rend le code inexécutable et atteint l'effet des commentaires.
Les commentaires multilignes peuvent également être utilisés dans le format suivant:
:<<EOF Contenu des commentaires... Contenu des commentaires... Contenu des commentaires... EOF
EOF peut également utiliser d'autres symboles:
:<<' Contenu des commentaires... Contenu des commentaires... Contenu des commentaires... ' :<<! Contenu des commentaires... Contenu des commentaires... Contenu des commentaires... !