$?用于对上一个命令有没有执行成功的判断。
如果返回为0则说明执行成功,如果返回为其他数值则失败。
[ ~]# zhouziqi
bash: zhouziqi: command not found
[ ~]# echo $?
127
[ ~]#
$$是获取当前shell的进程号。一般,我们有新的脚本的时候,我们要把旧的脚本杀掉的话,可以通过$$获取到当前shell脚本的进程号,一般是比如:
[ ~]# cat 1.sh
echo "$$" > /root/a.log
while true
do
uptime
sleep 2
done
[ ~]# vim a.
a.log a.sh
[ ~]# vim a.log
[ ~]# sh 1.sh &
[1] 24492
[ ~]# 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文件可以看到这个脚本的进程号,这样我们就可以杀死这个进程啦
[ zhouyu]# cat 58.sh
#!/bin/bash
tar zcf service.tar.gz * >&/dev/null
[ $? -eq 0 ] && echo ok
上面的意思是创建一个tar文件,把文件的输出信息给垃圾箱,然后判断上面的命令有没有成功,如果成功就输出OK
来源: