1. $? 表示上一个命令退出的状态
#正确命令的退出状态一般为“0”,不正确的命令会是一个不为“0”的数字
#输入一个正确的ls命令
[root@master ~]# ls
[root@master ~]# echo $?
0
#输入一个错误命令
[root@master ~]# l0
-bash: l0: command not found
[root@master ~]# echo $?
127
2. $$ 表示当前进程编号
[root@master ~]# echo $$
29137
3. $0 表示当前脚本名称
#创建test01.sh脚本
[root@master ~]# vi test01.sh
echo $0
[root@master ~]# chmod 777 test01.sh
#运行脚本后会显示脚本名称
[root@master ~]# ./test01.sh
./test01.sh
4. $n 表示n位置的输入参数(n代表数字,n>=1)
[root@master ~]# vi test01.sh
echo "parameter01:"$1
echo "parameter02:"$2
[root@master ~]# ./test01.sh apple banana
parameter01:apple
parameter02:banana
5. $# 表示参数的个数,常用于循环
此特殊变量不常用,在此不做演示
6. $*和$@ 都表示参数列表
在脚本中使用echo输出$*和$@,两变量的输出结果没有区别;
区别在于当两变量使用双引号引起来的时候,$*会以“$1$2$3...”格式输出,$@则会分开输出变量
[root@master ~]# vi test.sh
echo '直接使用$*:'$*
echo '直接使用$@:'$@
echo 'for循环中使用$*:'
for p in $*
do
echo $p
done
echo 'for循环中使用$@:'
for p in $@
do
echo $p
done
echo 'for循环中使用双引号的$*:'
for p in "$*"
do
echo $p
done
echo 'for循环中使用双引号的$@:'
for p in "$@"
do
echo $p
done
[root@master ~]# ./test.sh apple banana
直接使用$*:apple banana
直接使用$@:apple banana
for循环中使用$*:
apple
banana
for循环中使用$@:
apple
banana
for循环中使用双引号的$*:
apple banana
for循环中使用双引号的$@:
apple
banana