Linux下的命令执行判断

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

$?

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

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

&&和||

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

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

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

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

# 先进入hehe目录,如果没有这个目录则创建这个目录[[email protected] /home/yangchaolin]# cd hehe || mkdir hehe && echo $?
-bash: cd: hehe: No such file or directory# 返回0是因为创建目录hehe成功了,所以返回0
0# 查看验证确实创建目录成功
[[email protected] /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
...# 再次执行重复命令
[[email protected] /home/yangchaolin]# cd hehe || mkdir hehe && echo $?# 执行返回0,是因为cd hehe || mkdir hehe的cd hehe执行成功,mkdir hehe就不再执行,整体执行成功,因此echo $?会执行
0# 确定进入了hehe目录。
[[email protected] /home/yangchaolin/hehe]# pwd
/home/yangchaolin/hehe

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

参考转载博文:

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

原文地址:https://www.cnblogs.com/youngchaolin/p/11716600.html

时间: 2024-10-11 21:09:28

Linux下的命令执行判断的相关文章

Linux下多命令执行

Linux下多命令执行: 1.执行多条命令,不确保每条执行成功. 多条命令之间用分号(;)隔开,比如:command1 || command2 || command3 三条命令中都会执行,不确保每条命令执行成功. 2.执行多条命令,遇到执行失败的命令之后,停止后续命令执行.多条命令之间做逻辑与(&&)操作,比如:command1 && command2 && command3 三条命令中有一个失败则停止后续命令执行. 3.执行多条命令,遇到执行成功的命令之后

【linux】linux 下 shell命令 执行结果赋值给变量

通用方法 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令,然后使用变量接收 var=` find /apps/swapping -name '*swapping*.jar' ` 打印变量结果 echo $var 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/10579073.html

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child

linux下通过命令启动多个终端执行相应的命令和程序

    作者:张昌昌 在一些情况下,往往需要同时启动多个终端并让终端执行自动执行相应的命令,进而达到提高操作效率的目的.在linux下gnome-terminal启动终端命令, gnome-terminal -x 后跟执行的命令,bash是linux启动子shell的命令,bash -c "所要执行的命令串",通过嵌套gnome-terminal -x bash -c ......,表示启动新终端, 并在新启动的终端里执行bash -c,即启动子shell,由子shell执行-c后面的

linux 命令执行判断依据--;,&&,||

命令执行判断依据--;,&&,|| 在linux运维过程中或者日常linux系统操作过程中会同时执行多条命令,这样的话需要通过我们的多重命令方式进行处理. 通过使用';'分号执行多个命令,如例: #sync;sync;shutdown -h now 通过判断执行命令,&&/||执行情况 如例: cmd1&&cmd2: 若cmd1执行完毕且正确执行($?=0),则开始执行cmd2 若cmd1执行完毕且错误执行($?!=0),则开cmd2不执行 cmd1||cm

Linux下QT中执行shell命令

当需要在QT中执行shell命令时可以利用以下方法: (1)首先包含头文件: #include <QProcess> (2)执行shell命令: QProcess::execute("ls"); ///////////////////// #include  <QProcess> void Widget:on_pushButton_clicked() { //* system("ls");//调用LINUX C函数库中的system(cons

Linux下ls命令显示符号链接权限为777的探索

Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录下所有可见文件的详细属性,包括文件属性.所有者.文件大小等信息.但是,当其显示符号链接的属性时,无论其指向文件属性如何,都会显示777,即任何人可读可写可执行.本文从ls命令源码出发,由浅入深地分析该现象的原因,简略探究了Linux 4.10下的符号链接链接.文件系统与权限的源码实现. 关键词:Li

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返