ENV:
[root@Fedora31 ~]# uname -r
5.5.15-200.fc31.x86_64
[root@Fedora31 ~]# cat /etc/redhat-release
Fedora release 31 (Thirty One)
1.$0
当前脚本的文件名
2.$n
传递给脚本的参数,n是一个数字,表示第几个参数,如第一个参数为$1,第二个参数为$2.
3.$#
传给脚本的参数个数
4.$*
传给脚本的所有参数的列表,类似一个整体字符串显示
5.$@
传给脚本的所有参数的列表,每个列表项单独输出参数
6.$*与$@区别
a.都表示传递给脚本的所有参数,当不使用双引号(” ”)时,都是以"$1" "$2".."$n"形式输出所有参数
b.当使用双引号时,“$*”会将所有的参数作为一个整体,以"$1 $2 ..$n"的形式输出所有的参数,而"$@"会将各个参数分开,以''$1" "$2"..."$n"的形式输出所有参数
7.$!
shell最后运行的后台PID(后台运行的最后一个进程的进程ID号)
8.$?
最后运行的命令返回的结束代码(0表示正常,其他表示异常)
9.$$
当前shell的进程ID
10.$-
显示shell使用的当前选项,与set命令功能相同
11.实例:
[root@Fedora31 ~]# cat arguments.sh
#!/bin/bash
#Description:arguments $0,$n $#, $*, $@, $!,$?, $$代表含义
echo "SHELL本身文件名:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "参数个数为:$#"
echo "传递参数作为一个整体显示参数列表:$*"
for arg in "$*"
do
echo $arg
done
echo "传递参数分开显示参数列表:$@"
for arg in "$@"
do
echo $arg
done
echo "脚本运行的当前进程ID号:PID$$"
echo "shell使用的当前选项:$-"
touch shell_bash.txt
echo "上个命令的退出状态:$?"
/bin/bash arguments.sh one two three
SHELL本身文件名:arguments.sh
第一个参数:one
第二个参数:two
参数个数为:3
传递参数作为一个整体显示参数列表:one two three
one two three
传递参数分开显示参数列表:one two three
one
two
three
脚本运行的当前进程ID号:PID58107
shell使用的当前选项:hB
上个命令的退出状态:0