shell 脚本中几种参数的含义
2024-02-26 15:13:18
在看apisix-dashborad的项目时,发现入口的脚本我都没懂啥意思,赶紧查一下shell中各个参数的含义。
含义
- $0 当前进程的名字
- $n 当前进程的第n个参数值,n的取值范围为1~9
- $* 当前进程的所有参数,可以超过9个
- $# 当前进程的参数个数
- $$ 当前进程的PID
- $! 后台运行的上一个进程的pid,比如直接打开一个终端,它的前一个进程pid是0
- $? 执行的上一条指令的返回值(显示上一条命令的退出状态。0表示没有错误,其他返回值对应的错误在Linux中可以用errno对比)
- $- 显示shell使用的当前选项,与set命令功能相同
- $@ 跟$*类似,但是可以当做数组使用
$* 和 $@的区别
在没有使用双引号的情况下,这两种使用方式是一致的,每一个参数都是独立的个体;而在使用双引号的情况下则不同,$*会把所有的参数视为一个整体,输出是也是一个整体,而$@依然是将每一个参数视为独立的个体。执行下面的两个脚本,就可以看出不同。
不带引号:
1 | !/bin/bash |
输出:
1 | ▶ ./test.sh 1 2 3 |
带引号:
1 | !/bin/bash |
输出:
1 | ▶ ./test.sh 1 2 3 |