特殊变量$n
含义:用于接收脚本文件执行时传入的参数,$1-$9代表获取第一参数到第九个参数
第十个参数以后:${10}
$0用于获取当前脚本文件名称的
示例:
执行脚本文件传入参数语法:sh 脚本名称 参数1 参数2…
echo "当前脚本名称是:$0"
echo $1
echo $2
echo ${10}
输出结果是:
[root@web2 sh]#sh demo4.sh 1 2 3 4 5 6 7 8 9 10
当前脚本名称是:demo4.sh
1
2
10
特殊变量$#:获取所有输入参数的个数
echo "所有输入参数的个数是:${#}"
特殊变量:$* $@
$*
$@
#含义都是获取所有输入参数,用于以后输出所有参数
区别:
1不使用双引号括起来,功能一样
$* $@获取所有输入参数,格式是$1 $2...
2使用双引号括起来:
"$*":获取的所有参数拼接位一个字符串,格式"$1 $2 $3"
"$@":获取一组参数对象,格式为:"$1" "$2" "$n"
使用循环打印所有参数可以看出区别
for var in 列表变量
do
命令
done
示例:$* $@的区别
实现直接输出所有参数
使用循环输出所有参数
echo "使用\$*直接输出:$*"
echo "使用\$@直接输出:$@"
echo "使用循环直接输出:\$@"
for item in "$@"
do
echo $item
done
echo "使用循环直接输出:\$*"
for item in "$*"
do
echo $item
done
输出结果:
所有输入参数的个数是:10
使用$*直接输出:1 2 3 4 5 6 7 8 9 10
使用$@直接输出:1 2 3 4 5 6 7 8 9 10
使用循环直接输出:$@
1
2
3
4
5
6
7
8
9
10
使用循环直接输出:$*
1 2 3 4 5 6 7 8 9 10
特殊符号变量$?:获取上一个shell命echo令的推出状态码,或者是函数的返回值,返回0代表执行成功,非0执行失败。
在这里插入代[root@web2 sh]#echo 1
1
[root@web2 sh]#echo $?
0
[root@web2 sh]#2
-bash: 2: 未找到命令
[root@web2 sh]#echo $?
127
码片
特殊变量$$:用于获取当前Shell环境的进程ID号
查询当前SHell的进行id号:
ps -aux |grep bash
echo $$