Linux下的命令执行判断

参考博主‘‘迹忆‘‘的文章,对linux下命令判断的使用有了初步的认识,命令执行判断是使用&&和||将多条命令联系到一起,执行的时候会通过判断上一条命令的执行结果,来决定下一条命令的执行‘命运‘。

$?

$?即上一条命令执行后的回传值,如果执行正确则返回0,如果执行错误则返回一个非0的数字。

# 执行正确命令[ /home/yangchaolin]# ll decompress/
total 20
-rw-------. 1 root root 18311 Oct 20 09:47 secure# 返回0
[ /home/yangchaolin]# echo $?
0# 执行错误命令
[ /home/yangchaolin]# ll hehe
ls: cannot access hehe: No such file or directory# 返回非0数字
[ /home/yangchaolin]# echo $?
2

&&和||

利用命令执行后的返回值的特征,可以配合&&和||,完成命令执行的判断,&&和||跟java中短路与和短路或类似。

(1)comand1 && comand2,如果comand1执行正确,接着会执行comand2,如果comand1执行错误,comand2将不再执行。

(2)comand1 || comand2,如果comand1执行正确,comand2将不再执行,如果comand1执行错误,则接着还要执行comand2。

下面结合$?和&& ||进行一下测试,感受一下。

# 先进入hehe目录,如果没有这个目录则创建这个目录[ /home/yangchaolin]# cd hehe || mkdir hehe && echo $?
-bash: cd: hehe: No such file or directory# 返回0是因为创建目录hehe成功了,所以返回0
0# 查看验证确实创建目录成功
[ /home/yangchaolin]# ll
total 104
-rw-r--r--. 1 root root     4 Oct 20 10:56 count
drwxr-xr-x. 2 root root  4096 Oct 20 09:53 decompressdrwxr-xr-x. 2 root root  4096 Oct 20 11:48 hehe
...# 再次执行重复命令
[ /home/yangchaolin]# cd hehe || mkdir hehe && echo $?# 执行返回0,是因为cd hehe || mkdir hehe的cd hehe执行成功,mkdir hehe就不再执行,整体执行成功,因此echo $?会执行
0# 确定进入了hehe目录。
[ /home/yangchaolin/hehe]# pwd
/home/yangchaolin/hehe

以上是对Linux命令执行判断的简单理解,后续查看用。

参考转载博文:

(1)https://www.onmpw.com/tm/xwzj/opersys_124.html 非常棒的$?介绍