2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
VerwendungSpezielle Variablen der Shell, die in Skripten und Funktionen zur Übergabe von Parametern verwendet werden.
Es gibt die folgenden speziellen Positionsparametervariablen:
Variable | Wirkung |
---|---|
$0 | Rufen Sie den Dateinamen und den Skriptpfad des Shell-Skripts ab |
$n | Rufen Sie den n-ten Parameter des Shell-Skripts ab. n liegt zwischen 1 und 9. Wenn er größer als 9 ist, einige{} ,wie{$10} |
$# | Ermitteln Sie die Gesamtzahl der Parameter hinter dem ausgeführten Shell-Skript |
$* | Rufen Sie alle Parameter des Shell-Skripts ohne Anführungszeichen ab, was dem entspricht$@ Die Funktion plus die Anführungszeichen „$*“ lautetEmpfängt alle Parameter als einzelne Zeichenfolge |
$@ | Ohne Anführungszeichen ist der Effekt derselbe wie oben. Mit Anführungszeichen ist er derselbeEmpfangen Sie alle Parameter als unabhängige Zeichenfolgen |
Suchmethode:man bash
,suchenSpecial Parameters
Variable | Wirkung |
---|---|
$? | Rückgabewert des letzten Befehlsausführungsstatus, 0 ist korrekt, ungleich 0 ist fehlgeschlagen |
$$ | Die Prozessnummer des aktuellen Shell-Skripts |
$! | PID des letzten Hintergrundprozesses |
$_ | Rufen Sie den letzten Parameter des letzten Befehls ab |
-n
: Inhalte ohne Zeilenumbrüche ausgeben-e
: Escape-Zeichen interpretieren n
: Neue Zeiler
: Eingebent
:Tabb
:Rücktastev
: Vertikales Tabulatorzeicheneval ls; cd ~
exec
Nach der Ausführung automatischexit
Grammatik:
Grammatik | Wirkung |
---|---|
# | Entfernen Sie die kürzeste Übereinstimmung vom Anfang |
## | Entfernen Sie die längste Übereinstimmung vom Anfang |
% | Entfernen Sie das kürzeste Streichholz vom Ende |
%% | Entfernen Sie die längste Übereinstimmung vom Ende |
# | Abfangen bestimmter Zeicheninhalte |
a*c | Entspricht einer Zeichenfolge, die mit a beginnt, eine beliebige Anzahl von Zeichen in der Mitte hat und mit c endet |
${变量} | Variablenwert zurückgeben |
${#变量} | Gibt variable Länge und Zeichenlänge zurück |
${变量:start} | Gibt das Zeichen nach dem Variablenoffsetwert zurück |
${变量:start:length} | Extrahieren Sie Zeichen, deren Länge nach dem Offset begrenzt ist |
${变量#word} | Löschen Sie am Anfang der Variablen die kürzeste passende Wortteilzeichenfolge |
${变量##word} | Löschen Sie vom Anfang der Variablen das längste passende Wort |
${变量%word} | Entfernen Sie die kürzeste passende Wortteilzeichenfolge vom Ende der Variablen |
${变量%%word} | Entfernen Sie die längste übereinstimmende Wortteilzeichenfolge vom Ende der Variablen |
${变量/pattern/string} | Ersetzen Sie das erste passende Muster durch eine Zeichenfolge |
${变量//pattern/string} | Ersetzen Sie alle Muster durch eine Zeichenfolge |
Bedienungsbeispiel: Dateinamen löschen
# 通过⼦串的替换⽅式
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}
:Wennparameter
Der Variablenwert ist leer, Rückgabeword
Zeichenfolge${parameter:=word}
:Wennparameter
Der Variablenwert ist dann leerword
Ersetzt einen Variablenwert und gibt seinen Wert zurück${parameter:?word}
:Wennparameter
Der Variablenwert ist leer,word
alsstderr
Ausgabe, andernfalls Variablenwert ausgeben ${parameter:+word}
:Wennparameter
Wenn der Variablenwert leer ist, tun Sie sonst nichtsword
zurückkehren# 原脚本命令,有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