1.获取传递给脚本的参数个数($#)
#!/bin/bash
echo $#
[root@iZbp170thpr4impaes41fzZ args]# ./1.sh a b c d e
5
2.获取脚本的名称以及第i个参数($0, $i)
#!/bin/bash
echo "执行脚本的名称为: $0"
echo "获取传入脚本的第二个参数为: $2"
[root@iZbp170thpr4impaes41fzZ args]# sh 2.sh mahua choudoufu
执行脚本的名称为:2.sh
执行脚本所传入的第二个参数为:choudoufu
3.获取脚本当前运行的进程号($$)
#!/bin/bash
echo "当前脚本运行的进程号为: $0"
[root@iZbp170thpr4impaes41fzZ args]# sh 3.sh
“当前脚本运行的进程号为:25968
4.显示最后命令的退出状态,0表示没有错误,其他表示有错误($?)
#!/bin/bash
if [ $1 -lt 10 ];
then
echo "hello,world!"
else
$[1/0]
fi
[root@iZbp170thpr4impaes41fzZ args]# sh 4.sh 4
hello,world!
[root@iZbp170thpr4impaes41fzZ args]# echo $?
0
[root@iZbp170thpr4impaes41fzZ args]# sh 4.sh 20
4.sh: line 7: 1/0: division by 0 (error token is "0")
[root@iZbp170thpr4impaes41fzZ args]# echo $?
1
5.显示传入脚本的所有参数($*, $@)
区别:$@是传给脚本的所有参数的列表,而$* 是以一个单字符串显示所有向脚本传递的参数,正常访问时没有区别,但当需要遍历时,$@一次输出一个命令行参数,而$*一次输出所有命令行参数
#!/bin/bash
#一次输出一个命令行参数
for i in "$@";
do
echo $i
done
#一次全部输出命令行参数
for i in "$*";
do
echo $i
done
[root@iZbp170thpr4impaes41fzZ args]# sh 5.sh a b c d e
a
b
c
d
e
a b c d e