Principes de base de Shell
définition
Qu'est-ce que Shell
• Shell n'est pas seulement un langage de commande, mais aussi un langage de programmation.
• C'est un environnement qui fournit une interface avec le système linux (unix).
• Recevoir l'entrée de l'utilisateur, exécuter le programme en fonction de l'entrée et afficher le sortie du programme.
• Vous pouvez exécuter les commandes utilisateur, les programmes et les scripts shell
Pour les utilisateurs, le shell est l'utilitaire le plus important. Une compréhension approfondie et la maîtrise des caractéristiques du shell et de la façon de l'utiliser est la clé pour faire bon usage du système Unix / Linux
Classification des coquilles
• Tout comme il existe différents types de systèmes, il existe différentes versions du shell, chacune avec son propre ensemble de commandes et de fonctions.
• Le shell UNIX a été écrit au milieu des années 1970 par Stephen Byrne et AT&T Bell Labs dans le New Jersey
- Invite Bourne shell $
Bourne shell comprend trois types: Bourne shell (sh), Korn shell (ksh) et Bourne Again Shell.
- Invite du shell C %
Le shell C comprend deux types: csh et tcsh
Interpréteur de script Shell
Afficher le shell par défaut du système
echo $ SHELL
[root@single conf]# echo $SHELL
/bin/bash
Parce que bash est facile à utiliser et gratuit, il est largement utilisé dans le travail quotidien. Dans le même temps, bash est également l'interpréteur de script shell par défaut pour la plupart des systèmes Linux.
Afficher les shells pris en charge par le système
cat / etc / shells
[root@single conf]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
Spécification de la coque
- Le nom de fichier du script shell a une extension de .sh, par exemple: test.sh
- Les fichiers de script Shell doivent recevoir l'autorisation d'exécution (le fichier qui vient d'être créé n'a pas l'autorisation d'exécution)
chmod u + x test.sh - Un script Shell standard indiquera quel interpréteur est utilisé pour exécuter le contenu du script sur la première ligne. La programmation de cette ligne sous Linux est généralement: #! / Bin / bash
- Méthode d' exécution du script
Shell./test.sh
commander
Entrée / sortie de la console
echo [-n] "..." 控制台输出
read VAR 控制台输入
Cas:
#!/bin/bash
echo -n "please enter your name => "
read NAME
echo "your name is $NAME"
résultat:
[root@single shell]# ./test.sh
please enter your name => jun
your name is jun
Annotation
单行:#...
多行::<<!...!
Cas:
#!/bin/bash
:<<!
echo -n "please enter your name => "
read NAME
echo "your name is $NAME"
!
echo "break"
#echo -n "hello shell"
résultat:
[root@single shell]# ./test.sh
break
variable
Format de la syntaxe: nom de la variable = valeur de la variable
•数字、字母、下划线、一般字母大写
•值可以是一个数字、文本、文件名、设备或任何其他类型的数据,不可以是指针
•shell可以创建,分配和删除变量
Type de variable
Types de | signification |
---|---|
Variable locale | 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. |
Variable d'environnement | Tous les programmes, y compris ceux démarrés par le shell, peuvent accéder aux variables d'environnement, et certains programmes ont besoin de variables d'environnement pour assurer leur fonctionnement normal. Vous pouvez utiliser la commande set pour afficher les variables d'environnement actuelles |
variables shell | 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 garantissant le fonctionnement normal du shell. |
Utilisation variable
- Variable locale
创建
NAME="henry"
AGE=18
使用
echo "$NAME,$AGE"
echo $NAME
取消
unset NAME
常量
readonly NAME
Cas:
[root@single shell]# NAME="JUN"
[root@single shell]# AGE=22
[root@single shell]# echo "$NAME,$AGE"
JUN,22
[root@single shell]# unset NAME
[root@single shell]# echo "$NAME,$AGE"
,22
[root@single shell]# NAME="jun"
[root@single shell]# readonly NAME
[root@single shell]# echo $NAME
jun
[root@single shell]# NAME="kun"
-bash: NAME: readonly variable
- Variable d'environnement
Variables d'environnement globales: accès entre instances
Variables d'environnement temporaires: variables d'environnement temporaires valides pour la connexion en cours
export -p #列出所有环境变量
export -n VAR #删除环境变量VAR
export VAR #添加环境变量VAR
[root@single shell]# export -p
declare -x CLASS_PATH=".:/opt/software/jdk180/lib/tools.jar:/opt/software/jdk180/lib/dt.jar"
declare -x HADOOP_HOME="/opt/software/hadoop/hadoop260"
declare -x HBASE_HOME="/opt/software/hadoop/hbase120"
···
[root@single shell]# export jun
[root@single shell]# export -p
···
declare -x jun
[root@single shell]# export -n jun
[root@single shell]# export -p
···
- variables shell
symbole | signification |
---|---|
$$ | Numéro de processus shell actuel |
0 $ | Le nom de fichier du script actuel |
$ n | Paramètres de script |
$ # | Nombre de paramètres de script |
$ * | Ensemble complet de paramètres de script |
$ @ | Collection indépendante de paramètres de script |
$? | La valeur d'état du résultat de l'exécution de la commande précédente ou la valeur de retour de la fonction: 0 signifie normal, 1 signifie échoué |
$! | Le numéro de processus de la dernière commande d'arrière-plan |
$* 和 $@ 的区别
不加"两者相同
加上"则$*代表整体,而$@代表个体