Linux系统Shell脚本变量理解

关于Shell脚本中的一些参数信息,是如何从命令中传递到脚本中去的?这就需要依赖于参数变量,常见的参数变量如下表所示:

变量 说明
$# 执行脚本传入参数个数
$* 执行脚本传入参数列表
$$ 执行脚本进程id
$@ 执行脚本传入所有参数
$0 执行脚本名称
$1 执行脚本第一个参数
$2 执行脚本第二个参数
$? 脚本执行状态0正常,其他表示有错误

可以看到,其实$*$@的结果应该是一样的。可以写一个Shell脚本来实际测试一下。脚本如下:

1
2
3
4
5
6
7
8
#!/bin/sh
echo "param number is : $#"
echo "param list is : $*"
echo "all param is : $@"
echo "process is : $$"
echo "file name is : $0"
echo "the first param is : $1"
echo "stat is : $?"

将这个文件命名为test.sh,然后使用命令sh test.sh param1 param2 param3来执行这个脚本,输出的结果如下:

1
2
3
4
5
6
7
param number is : 3
parm list is : param1 param2 param3
all param is : param1 param2 param3
process is : 14409
file name is : test.sh
the first param is : param1
stat is : 0

可以看到完全符合预期。

分享到