$?用于对上一个命令有没有执行成功的判断。

如果返回为0则说明执行成功,如果返回为其他数值则失败。

shell-进程状态变量_变量

[root@localhost ~]# zhouziqi

bash: zhouziqi: command not found

[root@localhost ~]# echo $?

127

[root@localhost ~]# 

$$是获取当前shell的进程号。一般,我们有新的脚本的时候,我们要把旧的脚本杀掉的话,可以通过$$获取到当前shell脚本的进程号,一般是比如:

[root@localhost ~]# cat 1.sh 

echo "$$" > /root/a.log

while true

do

uptime

sleep 2

done

[root@localhost ~]# vim a.

a.log  a.sh   

[root@localhost ~]# vim a.log 

[root@localhost ~]# sh 1.sh &

[1] 24492

[root@localhost ~]#  14:07:40 up  9:31,  2 users,  load average: 0.00, 0.00, 0.00

 14:07:42 up  9:31,  2 users,  load average: 0.00, 0.00, 0.00

看看a.log文件可以看到这个脚本的进程号,这样我们就可以杀死这个进程啦

[root@localhost zhouyu]# cat 58.sh 

#!/bin/bash

tar zcf service.tar.gz *  >&/dev/null

[ $? -eq 0 ] && echo ok

上面的意思是创建一个tar文件,把文件的输出信息给垃圾箱,然后判断上面的命令有没有成功,如果成功就输出OK