Répertoire d'articles
- 1. Variable
- 2. Comment définir des variables dans les scripts shell
- 3. Echappement des variables
- 4. Déclaration de variable
- 5. Tableau de variables
- 6. Paramètre d'alias de commande
- 7. Variables d'environnement utilisateur
- 8. Utilisez les résultats de l'exécution de la commande pour définir des variables
- 9. Fonctions de script
1. Variable
1.1 Définition des variables
La variable est l'adresse d'une zone de mémoire
1.2 Types de variables
-
Variables locales Les variables locales sont définies dans des scripts ou des commandes et ne sont valides que dans l'instance actuelle du shell. Les programmes démarrés par d'autres shells ne peuvent pas accéder aux variables locales.
-
Variables d'environnement Tous les programmes, y compris ceux lancés par le shell, peuvent accéder aux variables d'environnement.Certains programmes ont besoin de variables d'environnement pour assurer leur fonctionnement normal. Les scripts shell peuvent également définir des variables d'environnement si nécessaire.
-
Variables shell Les variables shell sont des variables spéciales définies par le programme shell. Certaines des variables du shell sont des variables d'environnement et d'autres sont des variables locales. Ces variables garantissent le fonctionnement normal du shell
2. Comment définir des variables dans les scripts shell
La commande d'exportation est utilisée pour générer des variables shell en tant que variables d'environnement ou des fonctions shell en tant que variables d'environnement.
Lorsqu'une variable est créée, elle n'est pas automatiquement connue des processus shell créés après elle. La commande d'exportation peut transmettre la valeur de la variable au shell suivant. Lorsqu'un script shell est appelé et exécuté, il n'aura pas automatiquement accès aux variables définies dans le script (l'appelant) à moins que ces variables n'aient été explicitement définies pour être disponibles. La commande d'exportation peut être utilisée pour transmettre la valeur d'une ou plusieurs variables à tout script ultérieur.
|
Représente le nom de la fonction dans [nom de la variable] |
|
(la variable n'est pas réellement supprimée, mais pas sortie vers l'environnement d'exécution des instructions suivantes) |
|
Lister toutes les variables d'environnement affectées au programme par le shell |
2.1 Niveau environnemental
export 变量=X : Transmettre la valeur de la variable
(La variable devient invalide après la fermeture de l'environnement )
2.2 Niveau utilisateur
vim ~/.bash_profile
- Écrire export 变量=X
source ~/.bash_profile
2.3 Niveau système
Méthode de niveau système 1:
vim /etc/profile
(Il n'est pas recommandé d'écrire dans le fichier de configuration principal)- Écrire export 变量=X
source /etc/profile
Méthode de niveau système 2:
vim /etc/profile.d/XXX.sh
: Dans le script personnalisé sous le répertoire de sous-configuration- Écrire export 变量=X
source /etc/profile.d/XXX.sh
2.4 Nom de variable
Suggestion: utilisez des majuscules pour les noms courts; utilisez "_" pour les noms longs
- N'utilisez que des lettres, des chiffres et des traits de soulignement anglais pour nommer
- Le premier caractère ne peut pas commencer par un nombre
- Sans espaces
- Impossible d'utiliser la ponctuation
- Impossible d'utiliser des mots-clés dans bash (utilisez la commande help pour afficher les mots-clés réservés)
3. Echappement des variables
|
Échapper à un seul personnage |
|
Citation faible, traduire plusieurs caractères par lots (impossible de traduire \ `$!) |
|
Citation forte |
4. Déclaration de variable
Les accolades { }
doivent aider l'interprète à reconnaître les limites des variables
a=1
echo $ab
echo ${a}b
5. Tableau de variables
数组名=(值1 值2 ... 值n)
${数组名[下标]} #读取数组格式
Exemple 1:
a=(1 2 3 4 5)
${a[0]} 数组第一个元素
${a[-1]} 数组最后一个元素
${a[*]} 所有元素
${a[@]} 所有元素
${a[*]:1:4} 第2-5个元素
${a[@]:1:4} 第2-5个元素
${#a[@]} 元素个数
${#a[*]} 元素个数
Exemple 2:
IP=(`ifconfig ens3 | grep -E "inet\>"`)
echo ${IP} 第一个元素
echo ${IP[1]} 第二个元素
echo ${IP[@]} 所有元素
echo ${#IP[@]} 元素个数
6. Paramètre d'alias de commande
1. Paramètres temporaires
alias XXX=‘vim’
2. Uniquement valable pour l'utilisateur actuel
vim ~/.bashrc
- Écrirealias XXX=‘vim’
source ~/.bashrc
3. Prend effet pour tous les utilisateurs du système
vim /etc/bashrc
- Écrirealias XXX=‘vim’
source /etc/bashrc
4. Supprimez l'alias dans l'environnement actuel
unalias XXX
7. Variables d'environnement utilisateur
Variable d'environnement: le chemin de recherche de commande utilisé par l'utilisateur dans le système d'exploitation
Méthode de réglage 1: utilisateur actuel
vim ~/.bash_profile
- Écrireexport PATH=$PATH:目录
source ~/.bash_profile
Méthode de réglage 2: tous les utilisateurs du système
vim /etc/bash_profile
- export PATH=$PATH:目录
source /etc/bash_profile
8. Utilisez les résultats de l'exécution de la commande pour définir des variables
8.1 Utilisation directe des résultats de l'exécution des commandes
Exécution prioritaire:
$(命令)
`命令`
(`
Backquote)
示例:
TEST=`hostname`
TEST=$(hostname)
8.2 Passer des paramètres dans des scripts
Mode non interactif
|
Le script lui-même |
|
La première chaîne de caractères après la saisie du script |
|
La deuxième chaîne de caractères après l'entrée du script |
|
La troisième chaîne de caractères après la saisie du script |
|
Le nombre de chaînes d'entrée après le script |
|
Tous les caractères saisis par le script (un tout) |
|
Tous les caractères saisis par le script (plusieurs entiers) |
|
Numéro d'identification du processus en cours exécutant le script |
|
Numéro d'identification du dernier processus exécuté en arrière-plan |
|
Affichez l'état de sortie de la dernière commande. 0 signifie aucune erreur, toute autre valeur signifie qu'il y a une erreur |
Mode interactif
read WESTOS 对WESTOS赋值
read -p "XXXX" 输出提示语
-s 隐藏输出内容
9. Fonctions de script
Définition: l'alias du programme
Méthode de réglage:
函数名()
{
action1;
action2;
}
Appel de fonction : nom de fonction
Dans Shell, vous pouvez passer des paramètres à une fonction lors de son appel. À l'intérieur du corps de la fonction, la valeur du paramètre est obtenue sous la forme de $ n, par exemple, $ 1 signifie le premier paramètre, $ 2 signifie le deuxième paramètre ... $ {10} signifie le 10e paramètre
tester:
create_user.sh détermine si l'utilisateur existe
- La sortie existe si elle existe
- S'il n'existe pas, il sera créé automatiquement et un mot de passe sera mis en place. Enfin, l'utilisateur est affiché
- Quittez le programme lorsque vous entrez exit
#!/bin/bash
Main()
{
read -p "Please input username: " userName
[ -z "$userName" ] && {
Main
}
[ "$userName" = "exit" ] || [ "$userName" = "EXIT" ] && {
echo "bye !"
exit
} || {
User_Create $userName
}
}
User_Create()
{
userName=$1
id $userName &> /dev/null && {
echo "$userName is exist !"
Main
} || {
read -p "Please input $userName password: " -s Passwd
echo ""
useradd $userName
echo $Passwd | passwd --stdin $userName &> /dev/null
echo $userName is created successfully !
Main
}
}
Main