&&,||,(),{},& 五个符号的运用

shell脚本执行命令的时候,有时候会依赖于前一个命令是否执行成功。而&&和||就是用来判断前一个命令执行效果的。

也可以使用 $? 变量判断一个命令是否执行成功。根据返回的结果判断是否执行下面的命令。

1  &&
   使用方法:cmd1 &&  cmd2
   这个方式简单明了,cmd1如果返回结果为真(即执行返回为0,成功执行)后,cmd2才被执行
   换句话说,如果cmd1执行成功&&那么执行cmd2
   这里有个命令
   [ -f /home/dellogs.sh ] && echo "清除日至脚本存在"
   总之,&&符号代表如果第一个命令执行成功才执行第二个命令。
2  ||
   使用方法:cmd1 ||cmd令2
   ||命令,cmd1没有执行成功则执行cmd2
   如简单例子
   cp wopper.txt oop.txt || echo "cp命令执行没有成功"
   如果||左边的命令没有执行成功,则屏幕中除显示“cp命令执行没有成功”
   下面给出一个更为实用的例子,
   awk ‘{print$1,$5}’ acc.qrt >qtr.tmp || echo "sorry the payroll(薪水) extraction(抽取) did'not work" | mail root

实现shell的三元操作符:

cmd1 && cmd2 || cmd3

如果cmd1执行成功,则执行cmd2,否则执行cmd3

3 除了使用&&和||这两方法外,还可以用(),{}这两个符号把命令连接起来
  ()和{}存在的目的只是为了,能一个shell或子shell中执行一组命令
   使用方法(cmd1;cmd2;cmd3;...)和{cmd1;cmd2;cmd3;...}
   这种情况比较少遇到,一般要和&&,||两个命令一起使用。
   例如
   comet monthent || (echo “Hello,quess what! comet did not work”| mail root;exit)

4、使用&可以将一个命令放在后台运行,从而使shell脚本能够继续往走执行;

for ((i=0;i<10;i++));do
  sleep 5 &
done echo "done"

上面的脚本执行后会立即打印出"done",sleep命令被扔给后台执行,不会阻塞脚本执行。

如果想要在进入下个循环前,必须等待上个后台命令执行完毕,可以使用wait命令:

for ((i=0;i<10;i++));do
  sleep 5 &
  wait
done echo "done"

这样,需要等待50s后才能在屏幕上看到"done"。

https://www.cnblogs.com/zhaolizhe/p/6923501.html

shell 脚本控制命令的执行顺序的更多相关文章

  1. SHELL脚本--多命令逻辑执行顺序

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html Linux中可以使用分号“;”.双and号“&& ...

  2. Shell脚本控制docker容器启动顺序

    1.遇到的问题 在分布式项目部署的过程中,经常要求服务器重启之后,应用(包括数据库)能够自动恢复使用.虽然使用docker update --restart=always containerid能够让 ...

  3. [转]shell脚本每行的执行顺序是怎样

    原文:https://blog.csdn.net/weixin_42609121/article/details/83028000 ---------------------------------- ...

  4. shell脚本linux命令连续执行

    shell命令连续执行的三种方式: 1.命令1:命令2:命令3 依次执行命令,无论前一条命令是否执行成功. 2.命令1 && 命令2 && 命令3 前一条命令执行成功后 ...

  5. Shell脚本- 单条命令循环执行重复工作

    关于shell for循环具体详细说明可参考:http://wiki.jikexueyuan.com/project/linux-command/chap34.html example: 分别在com ...

  6. [日期工具分享][Shell]为特定命令依次传入顺序日期执行

    [日期工具分享][Shell]为特定命令依次传入顺序日期执行 使用方式: <本脚本文件名(必要时需要全路径)> <要执行的命令所在的文件名> <开始日期> < ...

  7. linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆

    场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...

  8. Shell命令的执行顺序

    shell执行命令的步骤顺序如上图,看起来有些复杂. 当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真的把每个步骤的发生显示给你看. 所以,你可以假想这事我们偷窥Shell ...

  9. shell脚本中切换用户执行相应的命令或者shell脚本的方法

    通常在执行自动化过程中可能需要将root用户切换到其他用户进行执行,如:oralce 但是,执行的命令又要回到root用户下,继续执行root用户下的其他命令. 此时需要了解 su 命令中的参数 -c ...

随机推荐

  1. dede编辑文章不更新时间的方法

    在修改文章的时候,发现织梦DEDECMS5.7这个版本存在一个问题,修改文章的同时也修改了文章的发布时间,这个 功能可能有些人比较需要,但同时也有些站长朋友又不需要,因为我们编辑某个文章的时候,发现编 ...

  2. Nginx系列(4)- Nginx安装 | Windows

    下载 访问官网,选择稳定版对应的Windows系列 安装解压即可 启动nginx 有很多种方法启动nginx 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过 打开cmd命令窗口,切换到ngi ...

  3. Groovy系列(1)- Groovy简述

    Groovy简述 前言 由于性能测试的JSR223 Sampler取样器需要用到 Groovy 语言,这两天对其进行了粗略的学习,本文是对学习做的一个简单总结,主要内容参考于官方文档(Groovy 的 ...

  4. SpringBoot之SpringSecurity权限注解在方法上进行权限认证多种方式

    前言 Spring Security支持方法级别的权限控制.在此机制上,我们可以在任意层的任意方法上加入权限注解,加入注解的方法将自动被Spring Security保护起来,仅仅允许特定的用户访问, ...

  5. Flask SSTI利用方式的探索

    Flask SSTI利用方式的探索 一.SSTI简介&环境搭建 ​ 一个统一风格的站点,其大多数页面样式都是一致的,只是每个页面显示的内容各不相同.要是所有的逻辑都放在前端进行,无疑会影响响应 ...

  6. 那些我用Windows时必备的软件

    那些我用Windows时必备的软件 使用Windows多年来,自己发现了许多不错的小软件,在此做一个备份清单,方便今后装新机. 起源 \(hadow\)ock$ 越过高墙的小飞机 Google Chr ...

  7. Linux7安装redis6

    首先下载软件包并解压 cd /opt wget https://download.redis.io/releases/redis-6.2.5.tar.gz tar -zxvf redis-6.2.5. ...

  8. 题解 [ZJOI2016]大森林

    题目传送门 Description 现在有 \(n\) 棵以 \(1\) 为根的树,每棵树有一个生长节点,有 \(m\) 次操作,每次操作是下面三种中的一个: 在 \(l\sim r\) 的这些树的生 ...

  9. 洛谷4475 巧克力王国(KD-Tree + 维护子树和)

    (嘤嘤嘤 又是一个自闭了一晚上的题) qwq果然不是平面上的点的问题,也可以直接用KDTree打暴力 我们对于巧克力直接建kdtree 维护一个\(mx[i],mn[i]\) 但是有一个非常不友好的事 ...

  10. 通过ideviceinstaller获取IOS APP bundleId

    查看ios设备udid: idevice_id -l 查看ios应用的bundleId: # 安装ideviceinstaller brew install ideviceinstaller # 查看 ...