[Notes d'étude Linux 30] Variables de script shell

1. Variable


1.1 Définition des variables


La variable est l'adresse d'une zone de mémoire


1.2 Types de variables


  1. 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.

  2. 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.

  3. 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.


-F
Représente le nom de la fonction dans [nom de la variable]
-n
Supprimer la variable spécifiée
(la variable n'est pas réellement supprimée, mais pas sortie vers
l'environnement d'exécution des instructions suivantes)
-p
Lister toutes les variables d'environnement affectées au programme par le shell

Insérez la description de l'image ici

2.1 Niveau environnemental


export 变量=X : Transmettre la valeur de la variable

(La variable devient invalide après la fermeture de l'environnement )

Insérez la description de l'image ici
Insérez la description de l'image ici

2.2 Niveau utilisateur


  1. vim ~/.bash_profile
  2. Écrire export 变量=X
  3. source ~/.bash_profile

Insérez la description de l'image ici
Insérez la description de l'image ici

2.3 Niveau système


Méthode de niveau système 1:

  1. vim /etc/profile(Il n'est pas recommandé d'écrire dans le fichier de configuration principal)
  2. Écrire export 变量=X
  3. source /etc/profile

Insérez la description de l'image ici
Insérez la description de l'image ici

Méthode de niveau système 2:

  1. vim /etc/profile.d/XXX.sh: Dans le script personnalisé sous le répertoire de sous-configuration
  2. Écrire export 变量=X
  3. source /etc/profile.d/XXX.sh

Insérez la description de l'image ici

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

Insérez la description de l'image ici

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

Insérez la description de l'image ici



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[*]}	元素个数

Insérez la description de l'image ici

Exemple 2:

IP=(`ifconfig ens3 | grep -E "inet\>"`)
echo ${IP}	第一个元素
echo ${IP[1]}	第二个元素
echo ${IP[@]}	所有元素
echo ${#IP[@]}	元素个数

Insérez la description de l'image ici



6. Paramètre d'alias de commande


1. Paramètres temporaires

alias XXX=‘vim’

Insérez la description de l'image ici


2. Uniquement valable pour l'utilisateur actuel

  1. vim ~/.bashrc
  2. Écrirealias XXX=‘vim’
  3. source ~/.bashrc

3. Prend effet pour tous les utilisateurs du système

  1. vim /etc/bashrc
  2. Écrirealias XXX=‘vim’
  3. 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

  1. vim ~/.bash_profile
  2. Écrireexport PATH=$PATH:目录
  3. source ~/.bash_profile

Méthode de réglage 2: tous les utilisateurs du système

  1. vim /etc/bash_profile
  2. export PATH=$PATH:目录
  3. source /etc/bash_profile

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici



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

0 $
Le script lui-même
1 $
La première chaîne de caractères après la saisie du script
2 $
La deuxième chaîne de caractères après l'entrée du script
3 $
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

Insérez la description de l'image ici

Mode interactif

read WESTOS	对WESTOS赋值
read -p "XXXX"	输出提示语
-s	隐藏输出内容

Insérez la description de l'image ici



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

  1. La sortie existe si elle existe
  2. S'il n'existe pas, il sera créé automatiquement et un mot de passe sera mis en place. Enfin, l'utilisateur est affiché
  3. 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

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_46069582/article/details/111566786
conseillé
Classement