在 Bash 解释器中,内置了许多变量,这些变量的功能是解释器自带的,我们在编写shell脚本时如果能灵活的使用它们,对脚本的编写效率以及差错大有帮助, 下面一一介绍这些变量
$FUNCNAME、$LINENO、$PWD
FUNCNAME
和LINENO
变量经常用于脚本的调试
FUNCNAME
表示当前函数的名字,作用范围仅限函数中使用,在函数外无值
LINENO
表示当前所在脚本中变量出现在的行号
PWD
表示当前目录, 对应于 pwd
命令
现有个脚本 a.sh
内容如下
1 #!/bin/bash
2
3
4 testa()
5 {
6 echo 'func='$FUNCNAME,$LINENO
7 }
8
9
10 testa
11
12 echo 'lineno:'$LINENO
13 echo 'xx:'$FUNCNAME
14 echo 'curpath:'$PWD
执行 ./a.sh
命令, 输出如下
[tt@ecs-centos-7 ~]$ ./a.sh
func=testa,6
lineno:12
xx:
curpath:/home/tt
在 testa
函数中 FUNCNAME
变量值是 testa
,也即函数名字,在函数外部无值
LINENO
变量无论是在函数中还是函数外,都表示当前所在的行号
$$、$PPID
这两个变量依次表示当前进程ID和父进程ID
现有 a.sh
脚本,内容如下
sleep 20
睡眠语句是为了让执行脚本进程暂缓退出,在另一个终端中验证输出的结果
#!/bin/bash
#set -u
echo 'cur pid:'$$
echo 'parent pid:'