关于 $?


$?  表示最后运行的命令的结束代码

测试示例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

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2256210