参考博主''迹忆''的文章,对linux下命令判断的使用有了初步的认识,命令执行判断是使用&&和||将多条命令联系到一起,执行的时候会通过判断上一条命令的执行结果,来决定下一条命令的执行'命运'。
$?
$?即上一条命令执行后的回传值,如果执行正确则返回0,如果执行错误则返回一个非0的数字。
# 执行正确命令[root@node01 /home/yangchaolin]# ll decompress/ total 20 -rw-------. 1 root root 18311 Oct 20 09:47 secure# 返回0 [root@node01 /home/yangchaolin]# echo $? 0# 执行错误命令 [root@node01 /home/yangchaolin]# ll hehe ls: cannot access hehe: No such file or directory# 返回非0数字 [root@node01 /home/yangchaolin]# echo $? 2
&&和||
利用命令执行后的返回值的特征,可以配合&&和||,完成命令执行的判断,&&和||跟java中短路与和短路或类似。
(1)comand1 && comand2,如果comand1执行正确,接着会执行comand2,如果comand1执行错误,comand2将不再执行。
(2)comand1 || comand2,如果comand1执行正确,comand2将不再执行,如果comand1执行错误,则接着还要执行comand2。
下面结合$?和&& ||进行一下测试,感受一下。
# 先进入hehe目录,如果没有这个目录则创建这个目录[root@node01 /home/yangchaolin]# cd hehe || mkdir hehe && echo $? -bash: cd: hehe: No such file or directory# 返回0是因为创建目录hehe成功了,所以返回0 0# 查看验证确实创建目录成功 [root@node01 /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 ...# 再次执行重复命令 [root@node01 /home/yangchaolin]# cd hehe || mkdir hehe && echo $?# 执行返回0,是因为cd hehe || mkdir hehe的cd hehe执行成功,mkdir hehe就不再执行,整体执行成功,因此echo $?会执行 0# 确定进入了hehe目录。 [root@node01 /home/yangchaolin/hehe]# pwd /home/yangchaolin/hehe
以上是对Linux命令执行判断的简单理解,后续查看用。
参考转载博文:
(1)https://www.onmpw.com/tm/xwzj/opersys_124.html 非常棒的$?介绍