English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Wir können Parameter beim Ausführen eines Shell-Skripts an das Skript übergeben und das Format der Parameter im Skript ist:$n.n Stellt eine Zahl dar,1 Der erste Parameter des ausführenden Skripts,2 Der zweite Parameter des ausführenden Skripts, usw.
Im folgenden Beispiel übergeben wir drei Parameter an das Skript und geben sie nacheinander aus, wobei $0 Für den Dateinamen der auszuführenden Datei (einschließlich des Pfades):
#!/bin/bash # author:基础教程 # url:de.oldtoolbag.com echo "Shell 传递参数示例!"; echo "Der Name der auszuführenden Datei: $0"; echo "第一个参数为:$1"; echo "Der zweite Parameter ist: $"2"; echo "Der dritte Parameter ist: $"3";
Setzen Sie das Ausführungsrecht für das Skript und führen Sie das Skript aus, das Ergebnis ist wie folgt:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数示例! Der Name der auszuführenden Datei: ./test.sh 第一个参数为:1 Der zweite Parameter ist:2 Der dritte Parameter ist:3
Außerdem gibt es einige spezielle Zeichen, die zur Verarbeitung von Parametern verwendet werden:
Parameterverarbeitung | Beschreibung |
---|---|
$# | Anzahl der an das Skript übergebenen Parameter |
$* | Alle an das Skript übergebenen Parameter werden als ein einzelner String angezeigt. wie*Fälle, bei denen """" um den Text gesetzt wird, sowie bei1 $2 Alle Parameter werden im Format "… $n" ausgegeben. |
$$ | Die aktuelle Prozess-ID der Skriptausführung |
$! | Die ID des letzten im Hintergrund laufenden Prozesses |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
#!/bin/bash # author:基础教程 # url:de.oldtoolbag.com echo "Shell 传递参数示例!"; echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "传递的参数作为一个字符串显示:$*";
执行脚本,输出结果如下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数示例! 第一个参数为:1 参数个数为:3 传递的参数作为一个字符串显示:1 2 3
$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
#!/bin/bash # author:基础教程 # url:de.oldtoolbag.com echo "-- \$* 演示 ---" for i in "$*"; do echo $i done echo "-- \$@ 演示 ---" for i in "$@"; do echo $i done
执行脚本,输出结果如下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 -- $* 演示 --- 1 2 3 -- $@ 演示 --- 1 2 3