Shell特殊位置变量

位置参数

位置参数(Positional Parameters)是一种特殊的Shell变量,用于从命令行向Shell脚本传递参数。
$1 表示第1个参数,$2表示第2个参数等。
从${10}开始,参数号需要用花括号括起来,如${11}、${12}、${13}、${100}、……。
$0 表示脚本名称。

新建一个test.sh脚本,示例如下:

#!/bin/bash
echo $0
echo $1
echo $2
echo $3
echo $4
echo $5
echo $6
echo $7
echo $8
echo $9
echo ${10}

运行脚本结果如下:

test@yanfadi:$ ./test.sh php java css html mysql zimudou yanfadi shell linux
./test.sh
php
java
css
html
mysql
zimudou
yanfadi
shell
linux

特殊参数

特殊参数用于快速查找、统计、查看一些特殊的位置信息。

命令 说明
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如第一个参数是$1,第二个参数是$2
$# 传递给脚本或函数的参数个数
$* 传递给脚本或函数的所有参数
$@ 传递给脚本或函数的所有参数。被双引号(“ “)包含时,与 $* 稍有不同
$? 命令的退出状态,0表示没有错误,非0表示有错误
$$ 当前Shell运行的进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
$- 显示shell使用的当前选项,与 set命令功能相同

脚本示例如下:

#!/bin/bash
echo $0
echo $1
echo $2
echo $3
echo $#
echo $*
echo $@
echo $?
echo $$
echo $-

运行脚本结果如下:

test@yanfadi:~$ ./test.sh zimudou yanfadi "php"
./test.sh
zimudou
yanfadi
php
3
zimudou yanfadi php
zimudou yanfadi php
0
3278
hB