shell脚本中顺序执行另几条shell命令

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 命令执行操作符

多条命令可以在一行中出现。它们可以从左到右顺序执行。此时,各条命令之间应以分号( ;)隔开.
如:
   pwd ; who | wc -l ; cd /usr/bin

在相邻命令间可存在逻辑关系,即逻辑“与”和逻辑“或”。

逻辑与操作符“&&”;
其一般形式:   命令1 && 命令2

其功能是先执行命令1,如果执行成功,才执行命令2;否则,若命令1执行不成功,则不执行命令2。
<例如>
     cat  abc&&pwd
逻辑或操作符“||”;
其一般形式是: 命令1 || 命令2

例如:
cat abc || pwd
如果不能将文件abc的内容列出来,则显示当前工作目录的路径。

在Shell中有两种方式可以将若干命令组合在一起,使其在逻辑上被视为一条命令,它们是用花括号{ }将各命令括起来和用圆括号( )括起来。

以花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。成组命令的执行顺序是根据命令出现的先后次序,由左至右执行。在管道线中,成组命令把各命令的执行结果汇集在一起,形成一个输出流,这个流作为该管道线中下一个命令的输入。
例如,
{ echo "User Report for ` date ` . "; who ; } | pr
使用花括号时在格式上应注意:
左括号 “{ ”后面应有一个空格;右括号“}”之前应有一个分号( ;)。


成组命令也可以用圆括号括起来。
例如:
(echo "Current directory is ` pwd ` . "
cd /home/mengqc ; ls -l ;
cp m1 em1 && rm m1
cat em1) | pr
如上所示,在用圆括号括起成组命令时,左括号后不必有空格,右括号之前也不需加上分号。

二者执行过程相同,但是存在重要区别:用花括号括起来的成组命令只是在本Shell内执行命令表,不产生新的进程;而用圆括号括起来的成组命令是在新的子Shell内执行,要建立新的子进程。因此,在圆括号内的命令不会改变父Shell的变量值及工作目录等。

之前以为shell脚本的执行就是把脚本里的shell语句一句一句不停的往linux里丢,刚刚问了下同事,和上网查了一下才知道,理解错了。难过

转载一句话:你可以把shell脚本看成你手工一条一条语句输入运行的结果。所以你也可以用“&”把一个程序的执行放入后台,但是当脚本运行到最后是不会等待这个进程的返回结果的,所以会直接结束脚本运行,该进程也会成为一个孤儿。解决方法是在脚本最后放“wait”


总结: shell脚本的执行就和手动一行一行打入一样;可以用&把它放到后台,这样就不需要等上一行命令结束就可以继续执行。


Shell脚本命令执行顺序 目录一、分号二、&&三、||四、空 一、分号 执行命令中间的 “分号” 代表命令之间没有逻辑关系,分号连接的命令会按照顺序从前向后依次执行,但分号两端的命令之间没有任何逻辑关系,所有写出来的命令最终都会被执行,即使分号前面的命令出错也不影响后面的命令。 例如:command1 ; command2 二、&& “&&” 表示逻辑与。&& 连接的命令会按照顺序从前向后执行,只有当 command1 正确执行执行command2,如果 comma 阅读详情

相关推荐

Linux Shell命令执行顺序及编程技巧

Shell编程中,控制命令执行顺序是非常重要的。本文将详细介绍Shell命令执行顺序的相关知识,并提供一些编程技巧。这两个条件语句按照顺序执行,只有前一个条件满足才会执行后续的条件语句。通过灵活运用顺序执行、逻辑与、逻辑或以及命令组等技巧,可以编写出更加高效和灵活的Shell脚本。这种方式适用于需要按照特定顺序执行命令,每个命令执行结果不会影响后续命令执行命令组中的命令将按照顺序执行。如果其中任何一个命令失败,则后续的命令将不会执行。如果其中任何一个命令成功,则后续的命令将不会执行

TechWhizKid的博客 1658

linux shell脚本执行完第一行命令完成后,在执行第二行命令问题处理

这段时间在给tomcat做日志分割,再使用定时任务去执行shell脚本时,发现切割后的日志文件老是被置空,手动执行shell脚本却没有任何问题,后面发现是定时任务执行的时候,在脚本第一行命令没有完成即开始执行第二行命令

pizssn的博客 8013

Shell 命令执行顺序分析[图]

Shell 从标准输入或脚本中读取的每一行称为管道(pipeline);它包含了一个或多个命令(command),这些命令被一个或多个管道字符(|)隔开。 事实上还有很多特殊符号可用来分隔单个的命令:分号(;)、管道(|)、&、逻辑AND (&&),还有逻辑OR (||)。对于每一个读取的管道,Shell都回将命令分割,为管道设置I/O,并且对每一个命令依次执行下面的操作:整个步骤顺序如上图所示,看起来有些复杂。当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真的把每个步骤的发生显示给你看。所以,你可以假想这事我们偷窥Shell内存里的情况,从而知道每个阶段的命令行是

shell脚本中等待上一条命令执行结束在执行下一条。

首先了解下背景知识。 命令生效顺序 Linux系统下命令生效的顺序有以下4条: 绝对路径或相对执行命令; 别名; Bash的内部命令; 按照$PATH环境变量定义的目录查找顺序搜到的第一个命令。 实际shell脚本编写过程中,总会有这么一个场景, #!/bin/bash file=command1 command2 $file ​ 下...

attack_city_lion的博客 6万+

linux脚本执行顺序,shell脚本顺序执行几条shell命令

命令执行操作符多条命令可以在一行中出现。它们可以从左到右顺序执行。此时,各条命令之间应以分号(;)隔开.如:pwd;who|wc-l;cd/usr/bin在相邻命令间可存在逻辑关系,即逻辑“与”和逻辑“或”。逻辑与操作符“&&”;其一般形式:命令1&&命令2其功能是先执行命令1,如果执行成功,才执行命令2;否则,若命令1执行不成功,则不执...

weixin_28730037的博客 1066

成组命令linux,shell脚本顺序执行几条shell命令

命令执行操作符多条命令可以在一行中出现。它们可以从左到右顺序执行。此时,各条命令之间应以分号(;)隔开.如:pwd;who|wc-l;cd/usr/bin在相邻命令间可存在逻辑关系,即逻辑“与”和逻辑“或”。逻辑与操作符“&&”;其一般形式:命令1&&命令2其功能是先执行命令1,如果执行成功,才执行命令2;否则,若命令1执行不成功,则不执...

weixin_34220502的博客 328

shell脚本执行命令_如何在Shell脚本执行命令

shell脚本执行命令Shell is a command-line interpreter that allows the user to interact with the system. It is responsible for taking inputs from the user and displaying the output. Shell是一个命令行解释器,允许用户与系统进行交...

从零开始的教程世界 5万+

Shell 脚本中调用一个 Shell 脚本的三种方式

先来说一下主要以下有几种方式: fork: path/to/foo.sh exec: exec path/to/foo.sh source: source path/to/foo.sh forkfork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用 foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh。运行的时候 terminal 会

Liu-Cheng Xu 10万+

SHELL【1】-在 Shell 脚本中调用一个 Shell 脚本的三种方式

文章目录前言一、在 Shell 脚本中调用一个 Shell 脚本的三种方式1.1 fork1.2 exec1.3 source总结 前言 提示:以下是介绍为什么写这篇文章: 如何再shell脚本中调用其他脚本顺序调用会保证脚本顺序执行吗? 一、在 Shell 脚本中调用一个 Shell 脚本的三种方式 先来说一下主要以下有几种方式: fork: 如果脚本执行权限的话,path/to/foo.sh。如果没有,sh path/to/foo.sh。 exec: exec path/to/fo

m0_46535940的博客 1万+

Shell批量、顺序执行py脚本

测试内容 python1.py #!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Time: 2020/3/27 16:47 # @Author: Damon # @Software: PyCharm import time print("测试1运行......") for i in range(6,10): print(i) ...

愿你远行千里,归来仍是少年 9339

linux脚本执行顺序,Shell脚本执行过程、执行方式详解

Shell脚本运行时,它会先查找系统环境变量ENV,该变量指定了环境文件(加载顺序通常是/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc等),在加载了上述环境变量文件后,Shell就开始执行Shell脚本中的内容。Shell脚本是从上至下、从左至右依次执行每一行的命令及语句的,即执行完了一个命令后再执行下一个,如果在Shell脚本中遇到子脚本(...

weixin_39953673的博客 4048

Shell 脚本系统学习 · 第5篇:多命令顺序执行的三种方式详解(`;`、`&&`、`||`)

Linux命令顺序执行方式详解 在Linux运维和脚本编写中,经常需要连续执行多条命令。掌握;、&&和||三种命令执行方式,可以灵活控制命令执行顺序和依赖关系。

小先森 2841

Shell脚本中的多任务并发执行

正常情况下,Shell脚本中的命令是串行执行的,当一条命令执行完才会执行接下来的命令。比如下面这段代码: #!/bin/bash for i in {1..10};do echo $i done echo "END" 执行结果: 1 2 3 4 5 6 7 8 9 10 END 可以看到,循环体中的“echo $i”命令是串行执行的。但是如果所执行命令耗时比较长,这就会导致整个程序的执行时间...

weixin_33714884的博客 8790

Shell脚本执行命令生效顺序

脚本执行 Shell可以用以下其中一种方法执行: 先赋予脚本文件执行权限,再直接运行 chmod 755 ./hello.sh ./hello.sh 通过Bash调用脚本文件 bash ./hello.sh 命令生效顺序 Linux系统下命令生效的顺序有以下4条: 绝对路径或相对执行命令; 别名; Bash的内部命令; 按照$PATH环境变量定义的目录查找顺序搜到的第一个命令。 ...

Jeffid的博客 5907

Shell脚本执行过程、执行方式详解

Shell脚本运行时,它会先查找系统环境变量ENV,该变量指定了环境文件(加载顺序通常是/etc/profile、~/.bash_profile、~/.bashrc、/etc/bashrc等),在加载了上述环境变量文件后,Shell就开始执行Shell脚本中的内容。 Shell脚本是从上至下、从左至右依次执行每一行的命令及语句的,即执行完了一个命令后再执行下一个,如果在Shell脚本中遇到子脚本...

小健健的博客 2574

Shell命令执行顺序

shell执行命令的步骤顺序如上图,看起来有些复杂。 当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真的把每个步骤的发生显示给你看。 所以,你可以假想这事我们偷窥Shell内存里的情况,从而知道每个阶段的命令行是如何被转换的。 shell执行命令的原理 Shell 从标准输入或脚本中读取的每一行称为管道(pipeline);它...

dengji8750的博客 1338
上一篇: 编写健壮的Bash shell脚本
下一篇: python routine
overstack
博客等级 码龄14年 115粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值