参数传递¶
参考:Shell 传递参数
参数传递分两部分,一是命令行参数的传递,而是函数参数的传递
下面学习命令行参数的传递,函数参数的传递在后续有关函数的内容中学习
特殊符号¶
通过特殊符号来解析命令行参数的传递
$#:参数个数$*:得到单个字符串,返回所有向脚本传递的参数$$:当前脚本运行的进程ID$!:后台运行的最后一个进程ID$@:返回所有参数$-:显示shell使用的当前选项$?:显示最后命令的退出状态。0表示没有错误,其他数字表示有错误
另外,$1表示获取第一个参数,$2表示获取第二个参数,以此类推
$* vs. $@¶
特殊符号$*和$@都返回所有参数值,但是其格式不一致
$*得到的是一个字符串,格式为"$1 $2 $3",而$@得到的是一个数组,格式为"$1" "$2" "$3"
$ cat test.sh
#!/bin/bash
for i in "$*"
do
echo $i
done
for i in "$@"
do
echo $i
done
结果$*以单个字符串输出,$@输出单独的参数
$ bash test.sh a b c d
a b c d
a
b
c
d