Shell实现命令先后执行

本文介绍了在命令行中如何使用wait、Sleep10和&&进行进程同步。wait命令确保所有后台任务执行完毕后再继续,Sleep10用于延迟执行,而&&用于条件执行,若前一条命令失败则跳过后续命令。文章讨论了在不使用nohup的情况下,如何安排命令执行以避免并发问题,特别是当需要确保某些命令在另一些命令之后执行但不必等待其全程的情况。

三种相关方法
wait
wait是等待wait命令前所有后台任务全部完成才往下执行,如果前面的命令是挂在后台一直跑(不会结束),wait后的命令永远不会执行

Sleep 10
延迟10秒,单写这句没有什么效果,因为多行程序是并发执行的(用回车分隔)

&&
表示"与",一条命令执行出错,则后面命令不执行,
前命令结束后,执行后命令

需要实现的几个条件
1、nohup不挂断的运行基础命令(不能wait和&&)
2、基础命令只有开始几秒与后续删除命令相关
后续命令只要不和基础命令一起并发执行就可以
sleep 10 && echo “delete” && rm filename

### Shell脚本中命令执行顺序 在Shell脚本环境中,命令按照特定的方式被处理和执行。默认情况下,bash shell从左至右解析并执行命令[^1]。 #### 初始阶段:预处理 当读取到一行新的指令时,shell会先对该行做初步分析。这一步骤涉及将输入字符串分割成独立的部分——即所谓的“命令单词”,同时也会在此过程中展开任何定义好的别名。 #### 主流程控制 一旦完成了上述准备工作之后,如果没有额外指定逻辑连接符(如`&&`, `||`),那么每一行内的各条语句会被依照它们出现的位置先后次序逐一调用;也就是说,在没有特殊指示的情况下,上一条命令完成后才开始下一条命令执行[^3]。 #### 特殊情况下的行为调整 对于某些特殊情况,可以通过添加不同的操作符来改变这种简单的线性模式: - 使用分号`;`可以强制让两个或多个简单命令连续执行; - 运算符`&`允许后台运行某个进程而不必等待其结束再继续后续的任务; - 条件运算符`&&`以及`||`则提供了基于前驱命令成功与否的选择机制。 ```bash command1 && command2 || command3 ``` 这段代码意味着只有当`command1`成功完成(`exit status=0`)的时候才会尝试去跑`command2`,而假如前者失败,则转而去执行`command3`。 #### 文件头部声明的影响 值得注意的是,每一个有效的Shell脚本通常会在最顶部包含一个特殊的注释行以指明该文件应该通过哪种解释程序来进行解析。例如,以`#!/bin/bash`开头表明此后的所有内容都应交给Bash shell负责解读与执行[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

779醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值