1、特殊变量
可以使用$$
表示当前shell的进程ID号或PID,
例如,
echo $$
输出:
28904
可以在shell脚本中使用的特殊变量,如下表,
特殊变量 | 描述 |
$0 | 当前脚本的文件名。 |
$n | 这些变量对应于调用脚本时使用的参数。 这里 第二个参数是 |
$# | 提供给脚本的参数数量。 |
$* | 表示的是参数的字符串类型当有多个参数的时候, 所有参数拼成一个长字符串作为一个参数。 如果一个脚本接收到两个参数, |
$@ |
而 |
$? | 上个命令执行的退出状态。 |
$$ | 当前shell的进程号。对于shell脚本,是执行的进程ID。 |
$! | 最后一个后台命令的进程号。 |
2、命令行参数
命令行参数$1
,$2
,$3
,…$9
是位置参数,$0指向实际的命令、程序、shell脚本或函数,$1
、$2
、$3
、…$9
作为命令的参数。
例如,
#!/bin/bash
echo "脚本文件名: $0"
echo "第一参数 : $1"
echo "第二参数 : $2"
echo "所有参数: $@"
echo "所有参数: $*"
echo "进程ID: $$"
echo "参数个数 : $#"
调用及输出:
$ bash a.sh "C" "Java" "Python"
脚本文件名: a.sh
第一参数 : C
第二参数 : Java
所有参数: C Java Python
所有参数: C Java Python
进程ID: 23880
参数个数 : 3
3、$* 和 $@区别
表示的是参数的字符串类型当有多个参数的时候,所有参数拼成一个长字符串作为一个参数。如果一个脚本接收到两个参数,$*
等价于$1 $2
。,不包括 $0
。不带引号的$@
和 $*
相同。但 "$*"
和 "$@"
有所不同。
"$*"
把所有参数合并成一个字符串,而 "$@"
会得到一个字符串参数数组。
4、判断命令执行的退出状态
$?
是上个命令执行的退出状态。大多数命令在成功时返回退出状态0
,在不成功时返回其它值。可能有些命令会区分不同类型的错误,并根据具体的失败类型返回不同的退出值。
例如,
$ bash a.sh "C" "Java" "Python"
脚本文件名: a.sh
第一参数 : C
第二参数 : Java
所有参数: C Java Python
所有参数: C Java Python
进程ID: 23880
参数个数 : 3
$ echo $?
0