1.位置变量
- $0 获取当前执行shell脚本的文件名,如果执行脚本带路径则会获取路径信息
[root@localhost ~]# cat test.sh #!/bin/sh echo $0 [root@localhost ~]# sh test.sh test.sh
- $n 获取当当前执行的shell脚本的第n个参数,n=1…9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来${10}
- $* 获取当前shell的所有参数,将所有的命令行参数视为单个字符串,相当于"$1$2$3"
- $# 获取当前shell命令行中参数的总个数
- $@ 这个程序的所有参数"$1" “$2” "$3"
$*和$@的区别:
$*将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"
$@将命令行每个参数视为单独的字符串,等同于"$1" “$2” “$3”,这是将参数传递给其他程序的最佳方式,会保留所有内嵌在每个参数里的任何空白
2.进程状态变量
-
$$ 获取当前shell脚本的进程号(PID)
-
$! 执行当一个指令的PID,上一个后台运行进程的进程号
-
$? 获取执行上一个指令的返回值(0为成功,非零为失败)
-
$_ 在此之前执行的命令(上一个命令)或脚本的最后一个参数
3.bash内部变量命令
-
echo
命令格式:echo args
功能:将echo命令后面args指定的字符串及变量等显示到标准输出 -
printf
功能:格式化打印 -
eval
命令格式:eval args
功能:当shell程序执行到eval语句时,shell读入参数args,并将组合成一个新的命令,然后执行 -
exec
命令格式:exec 命令参数
功能: 当shell执行到exec语句时,不会去创建新的子进程,而是转去执行指定的命令,当指定的命令执行完时,该进程就终止,所以shell程序中exec后面的语句将不再被执行 -
read
命令格式:read [参数] [变量名表]
常用参数:
-p 设置提示信息
-t 设置输入等待的时间,单位默认为秒
功能:从标准输入读字符串,传给shell程序内指定定义的变量
-
history
显示历史记录信息 -
export
命令格式:export 变量名 或:export 变量名=变量值
功能:用export将它的变量向下带入子shell,从而让子进程继承父进程中的环境变量 -
shift
shift|重新命名所有的位置参数变量,即$2变为$1,$3变为$2,在程序每使用一次shift语句,都使所有的位置参数依次向左移动一个位置,并使位置参数$#减1,直到减到0为止
-
exit n
功能:退出当前shell,在shell脚本中可以终止当前脚本执行 -
wait
功能:使shell等待在后台启动的所有子进程结束,wait的返回值总是真