【Shell】特殊变量

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值