在Shell中,有很多变量是被自动赋值的,常用的位置参数和特殊变量总结起来有:
- $0:相当于C语言main函数中的argv[0],还有$1,$2 ...... ,这些称为位置参数,相当于C语言main函数中的argv[1],argv[2] ......
- $#:相当于C语言main函数中的 argc-1。注意这里的 # 后面不表示注释。
- $@:表示参数列表$1,$2 ...... 。
- $?:上一条命令的退出码。
- $$:当前Shell的进程号。
下面我们来举一个例子:
shift位置参数可以使用shift命令左移,例如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。
那么我们如何遍历命令行参数呢?这里我们提供两种方式:
方式一:
方式二: