2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
UsageVariables spéciales du shell, utilisées dans les scripts et les fonctions pour passer des paramètres.
Il existe les variables de paramètres de position spéciales suivantes :
variable | effet |
---|---|
$0 | Obtenez le nom du fichier de script shell et le chemin du script |
$n | Récupère le nième paramètre du script shell n est compris entre 1 et 9. S'il est supérieur à 9, certains{} ,comme{$10} |
$# | Obtenez le nombre total de paramètres derrière le script shell exécuté |
$* | Récupère tous les paramètres du script shell, sans les guillemets, cela équivaut à$@ La fonction, plus les guillemets "$*", estReçoit tous les paramètres sous la forme d'une seule chaîne |
$@ | Sans guillemets, l'effet est le même que ci-dessus. Avec les guillemets, c'est le cas.Recevez tous les paramètres sous forme de chaînes indépendantes |
Méthode de recherche:man bash
,rechercheSpecial Parameters
variable | effet |
---|---|
$? | Valeur de retour du dernier état d'exécution de la commande, 0 est correct, non-0 est un échec |
$$ | Le numéro de processus du script shell actuel |
$! | PID du dernier processus en arrière-plan |
$_ | Récupère le dernier paramètre de la dernière commande |
-n
: Contenu de sortie sans sauts de ligne-e
: Interpréter les caractères d'échappement n
: nouvelle ligner
: Entrert
:languetteb
:retour arrièrev
: Caractère de tabulation verticaleeval ls; cd ~
exec
Après exécution, automatiquementexit
grammaire:
grammaire | effet |
---|---|
# | Supprimer la correspondance la plus courte du début |
## | Supprimer la correspondance la plus longue du début |
% | Supprimer la correspondance la plus courte de la fin |
%% | Supprimer la correspondance la plus longue de la fin |
# | Interception du contenu de caractères spécifié |
a*c | Correspond à une chaîne commençant par a, n'importe quel nombre de caractères au milieu et se terminant par c |
${变量} | Renvoie la valeur de la variable |
${#变量} | Renvoie la longueur variable, la longueur des caractères |
${变量:start} | Renvoie le caractère après la valeur de décalage variable |
${变量:start:length} | Extraire les caractères limités par la longueur après décalage |
${变量#word} | Depuis le début de la variable, supprimez la sous-chaîne de mots correspondante la plus courte |
${变量##word} | Dès le début de la variable, supprimez le mot correspondant le plus long |
${变量%word} | Supprimez la sous-chaîne de mots correspondante la plus courte de la fin de la variable |
${变量%%word} | Supprimez la sous-chaîne de mots correspondante la plus longue de la fin de la variable |
${变量/pattern/string} | Remplacez le premier motif correspondant par une chaîne |
${变量//pattern/string} | Remplacer tous les modèles par une chaîne |
Exemple d'opération: Supprimer le nom du fichier
# 通过⼦串的替换⽅式
snowk@SnowKYP# f=stu_102999_1_finished.jpg
# 变量的⼦串功能,去掉后缀
snowk@SnowKYP# echo ${f//_finished/}
stu_102999_1.jpg
# 利⽤变量的反引⽤替换⽂件名
snowk@SnowKYP# mv $f `echo ${f//_finished/}`
# 剩下的⽂件,利⽤循环操作
# 找出剩下所有需要替换的jpg⽂件
snowk@SnowKYP# ls *fin*.jpg
stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
# 写shell循环代码,循环操作
# 去掉所有jpg⽂件的_finished后缀
snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
snowk@SnowKYP# ls *.jpg
stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:siparameter
La valeur de la variable est vide, retournezword
chaîne${parameter:=word}
:siparameter
La valeur de la variable est vide, alorsword
Remplace une valeur de variable et renvoie sa valeur${parameter:?word}
:siparameter
La valeur de la variable est vide,word
commestderr
Sortie, sinon valeur de la variable de sortie ${parameter:+word}
:siparameter
Si la valeur de la variable est vide, ne faites rien, sinonword
retour# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f