shell中使用$
符号来取一个变量的值,常见的就是$VAR
或者${VAR}
,为了搞懂其它$#,$@,$0,$1,$2,$*,$$,$?
的意义,我们可以写一个测试脚本运行下:
#! /bin/bash
VAR="Hello World!"
echo "\$VAR : $VAR"
echo "\$# argc: $#"
echo "\$@ argv[]: $@"
echo "\$0 argv[0]: $0"
echo "\$1 argv[1]: $1"
echo "\$2 argv[2]: $2"
echo "\$* argv_str: $*"
echo "\$$ pid: $$"
echo "\$? retcode: $?"
运行结果如下:
./test.sh a b c d
$VAR : Hello World!
$# argc: 4
$@ argv[]: a b c d
$0 argv[0]: ./test
$1 argv[1]: a
$2 argv[2]: b
$* argv_str: a b c d
$$ pid: 11700
$? retcode: 0
我在echo时做了下标注,意义应该很明显了
$# 代表传入参数的个数
$@ 代表传入参数的列表
$0 代表脚本本身
$1 代表传入的第一个参数,$2,$3...以此类推
$* 以字符串方式显示所有传入的参数
$$ 脚本运行的进程ID
$? 显示最后命令的退出状况,0表示没有错误
此外,$-
记录着当前设置的shell选项,himBH是默认值,5个字母分别有各自含义,解释如下: