Linux shell脚本 (三)Shell特殊变量

时间:2022-03-31 06:14:49

Shell特殊变量

​ 前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。

​ 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:

$echo $$

运行结果

29949




变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号" "包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

5.1 命令行参数

​ 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。

请看下面的脚本:

#!/bin/bashecho "File Name: $0"echo "Param1: $1"echo "Param2: $2"echo "All Params: $@"echo "All Params: $*"echo "Param count : $#"

运行结果:

where@ubuntu:~$ ./test.sh 1 2 3File Name: ./test.shParam1: 1Param2: 2All Params: 1 2 3All Params: 1 2 3Param count : 3

5.2 退出状态

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。不过,也有一些命令返回其他值,表示不同类型的错误。下面例子中,命令成功执行:

$ls -l$echo $?0$

​ $? 也可以表示函数的返回值,后续将会讲解。