shell 脚本控制命令的执行顺序
&&,||,(),{},& 五个符号的运用
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 脚本控制命令的执行顺序的更多相关文章
- SHELL脚本--多命令逻辑执行顺序
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html Linux中可以使用分号“;”.双and号“&& ...
- Shell脚本控制docker容器启动顺序
1.遇到的问题 在分布式项目部署的过程中,经常要求服务器重启之后,应用(包括数据库)能够自动恢复使用.虽然使用docker update --restart=always containerid能够让 ...
- [转]shell脚本每行的执行顺序是怎样
原文:https://blog.csdn.net/weixin_42609121/article/details/83028000 ---------------------------------- ...
- shell脚本linux命令连续执行
shell命令连续执行的三种方式: 1.命令1:命令2:命令3 依次执行命令,无论前一条命令是否执行成功. 2.命令1 && 命令2 && 命令3 前一条命令执行成功后 ...
- Shell脚本- 单条命令循环执行重复工作
关于shell for循环具体详细说明可参考:http://wiki.jikexueyuan.com/project/linux-command/chap34.html example: 分别在com ...
- [日期工具分享][Shell]为特定命令依次传入顺序日期执行
[日期工具分享][Shell]为特定命令依次传入顺序日期执行 使用方式: <本脚本文件名(必要时需要全路径)> <要执行的命令所在的文件名> <开始日期> < ...
- linux 执行远程linux上的shell脚本或者命令以及scp 上传文件到ftp--免密码登陆
场景:在linux A 上执行Linux B上的shell脚本和命令 步骤1.设置ssh免登陆 1.SSH无密码登录 # 本地服务器执行(A机器):生成密钥对 ssh-keygen -t dsa -P ...
- Shell命令的执行顺序
shell执行命令的步骤顺序如上图,看起来有些复杂. 当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真的把每个步骤的发生显示给你看. 所以,你可以假想这事我们偷窥Shell ...
- shell脚本中切换用户执行相应的命令或者shell脚本的方法
通常在执行自动化过程中可能需要将root用户切换到其他用户进行执行,如:oralce 但是,执行的命令又要回到root用户下,继续执行root用户下的其他命令. 此时需要了解 su 命令中的参数 -c ...
随机推荐
- PHP设计模式之原型模式
原型模式其实更形象的来说应该叫克隆模式.它主要的行为是对对象进行克隆,但是又把被克隆的对象称之为最初的原型,于是,这个模式就这样被命名了.说真的,从使用方式来看真的感觉叫克隆模式更贴切一些. Gof类 ...
- linux7可以通过远程和localhost访问mysql,但是127.0.0.1不能访问
网上搜索的其他方法都试过,不行 比如设置权限,开放端口,配置数据库... 最好偶然一个搜索查看可能原因是防火墙端口问题: vim /etc/sysconfig/iptables 在文件中添加下面语句 ...
- Docker DevOps实战:GitLab+Jenkins(2)- CI/CD相关配置
Jenkins关联GitLab Gitlab仓库配置Webhooks 上传项目到GitLab,Jenkins构建
- linux下部署Elasticsearch6.8.1版本的集群
一.准备工作 安装包的下载:elasticsearch-6.8.1.tar.gz 集群服务器:A B 一.单节点elasticsearch的安装部署 a.进入es的下载目录home:解压tar ...
- php--laravel --debug--mac
1>安装debug 一.下载xdebug文件 1.将phpinfo();的信息全部输入网址中的框,得到适配的xdebug版本: 网址:http://xdebug.org/wizard.php 2 ...
- 给你一个app,怎么测试
安装卸载 安装卸载路径是否能自己选择,在不同操作系统下(Android.ios)安装是否正常,能正常运行,安装的文件及文件夹是否写入了指定的目录里,安装来自不同来源的(应用宝.360助手)下是否正常. ...
- P6295-有标号 DAG 计数【多项式求逆,多项式ln】
正题 题目链接:https://www.luogu.com.cn/problem/P6295 题目大意 求所有\(n\)个点的弱联通\(DAG\)数量. \(1\leq n\leq 10^5\) 解题 ...
- MyBatis切换至MyBatis-plus踩坑Invalid bound statement (not found):
部分情况可以参考https://blog.csdn.net/wwrzyy/article/details/86034458 我的问题出现的根本原因就是没有扫描到mapper的xml文件 因为MyBat ...
- HttpRunner3.X - 全面讲解如何落地项目实战
一.前言 接触httprunner框架有一段时间了,也一直探索如何更好的落地到项目上,本篇主要讲述如何应用到实际的项目中,达到提升测试效率的目的. 1.项目难题 这个月开始忙起来了,接了个大项目,苦不 ...
- 从零入门 Serverless | SAE 的远程调试和云端联调
作者 | 弈川 阿里巴巴云原生团队 导读:本节课程包含三部分内容,前两个部分简单介绍远程调试以及端云联调的原理,最后在 Serverless 应用引擎中进行实际演示. 经过之前课程的学习,相信大家对于 ...