$? 表示最后运行的命令的结束代码
测试示例1
root@bosh:~# cat a
exit 2
root@bosh:~# sh a
root@bosh:~# echo $?
2
root@bosh:~# cat a | grep exit
exit 2
root@bosh:~# echo $?
0
root@bosh:~# cat a | grep hello
root@bosh:~# echo $?
1
root@bosh:~#
测试示例2
[root@updb-new1 ~]# mysql -uroot -e "show databases"
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
[root@updb-new1 ~]# echo $?
0
[root@updb-new1 ~]# mysql -uroot -e "show databases"|grep test2
[root@updb-new1 ~]# echo $?
1
[root@updb-new1 ~]#
说明:
1、退出值为 0 ,表示执行成功,或者存在匹配的记录。
2、反之,没有执行成功,或者不存在匹配的记录。
典型使用场景
实际编写脚本时,可通过下面的 if 语句 判断上一步的命令是否执行成功。
if [ $? -ne 0 ] then echo '执行出错了 or 未找到相关记录 等' fi