前言:
$0 相当于C++中的argv[0]
$1、 $2、 … 位置参数,具体见下面说明
$# 参数的个数
$@ 参数列表
$* 同上,表示参数列表
$? 上一条命令的退出状态
$$ 当前进程号
无论在函数内部还是函数外部,$0都是代表的程序名,但是$1、$2、$3、…以及 $# 、 $@ 是不同的,它们分别代表的是传递给程序和函数的对应参数( $# 是传入的参数个数, $@ 是表示参数列表)。
1、代码1
#! /bin/bash
echo $0
echo $1
echo $2
echo $3
foo()
{
echo $0
echo $1
echo $2
echo $3
echo $4
echo "function foo\n"
}
echo "---start---"
foo 11 22 33 44
#foo $0 $1 $2 $3 $4
echo "---end---"
2、运行结果1
3、代码2
#! /bin/bash
echo $0
echo $1
echo $2
echo $3
foo()
{
echo $0
echo $1
echo $2
echo $3
echo $4
echo "function foo\n"
}
echo "---start---"
#foo 11 22 33 44
foo $0 $1 $2 $3 $4
echo "---end---"
4、运行结果2