参数传递¶
参考: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