`
memorymyann
  • 浏览: 271945 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell命令执行顺序

阅读更多

1.&&

 

在一个普通的shell中,命令执行是没有相互依赖的,比如

cat my1.txt

cat my2.txt

大家可以试试,无论上面一个命令是否正确运行,下面的指令都会运行。但有时候我们需要前一个指令没有成功执行时候,后一个指令就不要运行,这里就牵扯到&&。

[root@liumengli my_shell]# ls
1.sh  2.sh  case_shell.sh  crontab.txt  first.sh  for_shell.sh  hello  hello zhangchi  my.txt  shell_example.sh  test  until_shell.sh  while_shell.sh
[root@liumengli my_shell]# cat 1.sh && cat 2.sh
#!/bin/sh

echo "hello yuna"

exit 1
#!/bin/sh

echo "hello difa"
exit 0
[root@liumengli my_shell]# cat 3.sh && cat
cat        catchsegv 
[root@liumengli my_shell]# cat 3.sh && cat 2.sh
cat: 3.sh: 没有这个目录
从结果中可以看到cat 3.sh没有成功运行,那么cat 2.sh就不会成功运行。自己写的shell脚本也可以用&&链接起来

 

这里又牵扯到一个问题,到底怎样才算成功运行了呢。像上面那样 cat 3.sh这个是明显失败了。但如果我有2个脚本,如何才算前一个脚本成功运行了呢?关键在于 exit,如果exit 0被执行了就表示前一个成功运行, exit 1就没有成功运行,例如

[root@liumengli my_shell]# cat 1.sh
#!/bin/sh

echo "hello yuna"

exit 1
[root@liumengli my_shell]# cat 2.sh
#!/bin/sh

echo "hello difa"
exit 0
[root@liumengli my_shell]# ./1.sh && ./2.sh
hello yuna
[root@liumengli my_shell]# ./2.sh && ./1.sh
hello difa
hello yuna
[root@liumengli my_shell]#
第一个只执行了1.sh,因为它返回1,虽然从实际意义上看来,我们 1.sh成功运行了,但2.sh还是不会被运行。

 

2.||

 

和&&正好相反,当第一个指令运行失败时候,才运行第2个指令(当然也可以是脚本,和&&类似)。

 

3.()和{}

 

样例

[root@liumengli my_shell]# (./1.sh ; ./2.sh )
hello yuna
hello difa
[root@liumengli my_shell]#

这个表示这2个指令(其实是脚本)在一起运行,且都是在当前 shell中运行

如果是{}的话(语法一样,中间有;号,注意第一个要有空格,则指令不再当前 shell,而在这个shell的子shell下面运行

分享到:
评论

相关推荐

    Shell脚本中多命令逻辑执行顺序的方法详解

    在Shell脚本编程中,连接和控制多个命令的执行顺序是非常关键的,这涉及到脚本的逻辑流程和错误处理。本文将深入讲解如何利用分号、双and号、双竖线以及单个&符号来实现不同的命令执行逻辑。 1. 分号`;` 分号`;`...

    linux shell命令执行顺序的控制方法

    在Linux Shell中,控制命令执行顺序是至关重要的,特别是在编写脚本或自动化任务时。这里主要介绍三种控制命令执行顺序的方法:`&&`、`||` 和使用 `()` 或 `{}`。 1. `&&` 操作符:此操作符用于连接两个命令,只有...

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

    对于每一个读取的管道,Shell都回将命令分割,为管道设置I/O,并且对每一个命令依次执行下面的操作:整个步骤顺序如上图所示,看起来有些复杂。当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真...

    linux下批量执行oracle脚本的shell脚本

    3. **SQL脚本执行**:在`sqlplus`命令后,使用`@`符号跟上SQL脚本的路径,例如`@createTable.sql`,来执行脚本。 4. **错误处理**:通过`if`语句检查SQL脚本的执行结果,捕获可能的错误信息。 5. **日志记录**:为了...

    Logcat及adb shell命令的bat脚本实现例子

    如果在`bat`脚本中遇到进入`shell`后无法执行后续命令的问题,可能是因为没有正确处理命令的执行顺序或权限。确保每个命令都在适当的位置并赋予必要的执行权限是很关键的。 在编写`bat`脚本时,还需要注意以下几点...

    pycharm中执行window环境python脚本多条shell命令

    ### PyCharm中执行Windows环境下Python脚本及Shell命令 #### 概述 在Windows环境中使用PyCharm编写Python脚本并执行shell命令时,由于Windows与Linux等其他操作系统的命令差异,会遇到一些特殊的问题。本文将详细...

    一种限制shell脚本并行执行的方法

    本发明公开了一种限制shell 脚本并行执行 的方法,应用于linux 和unix 平台,包括:当有 shell 脚本需要执行时,脚本模块处理器向管道 写入请求;令牌模块处理器在管道另一端顺序读 取所述请求,当有令牌空闲时,将...

    16.linux8.0-shell脚本.pdf

    shell脚本是由一系列命令组成的,通过顺序执行这些命令,可以实现自动化的任务处理。 二、shell脚本的组成 shell脚本由多个部分组成,包括: 1. 环境声明:#!/bin/bash,声明该脚本是由bash解释器来执行的。 2. ...

    纯shell的自动登录执行脚本

    在这个特定的脚本中,它被设计为通过telnet协议连接到多台主机,并按照预设的顺序执行指定的命令。这个功能在系统管理、网络监控或者批量任务处理中非常有用,可以大大提高工作效率。 shell脚本是基于Bourne shell...

    Shell脚本中让进程休眠的方法(sleep用法)

    有时候写Shell的脚本,用于顺序执行一系列的程序。 有些程序在停止之后并没能立即退出,就例如有一个 tomcat 挂了,就算是用 kill -9 命令也还没瞬间就结束掉。 这么如果 shell 还没等其退出就接着执行下一行,这么...

    shell脚本编程.pdf

    首先,Shell脚本语言是一种解释型语言,将常用的Linux命令存储在文件中,由Shell读取并顺序执行。编写Shell脚本时需要注意的是,它按行解释,因此每行命令的结束很重要。脚本文件通常不需要后缀名,但若需要添加,可...

    面向 dba 的 linux shell 脚本简介

    Shell脚本是一个包含了一系列命令的文本文件,当执行这个文件时,会按照文件中的顺序依次执行这些命令。Bash(Bourne-Again SHell)是Linux系统中最常用的Shell,它集合了C shell、Korn shell和Bourne shell的特性。...

    运维看家本领之一:Shell脚本编程与正则表达式

    Shell脚本编程是运维工程师必备的基本技能之一,它涉及到对操作系统命令的组合、逻辑控制以及自动化任务的执行。Shell脚本使用的是shell解释器来执行,其中最常用的是bash。bash是Linux操作系统上最常见的shell,它...

    shell脚本生成.txt数据文件

    接下来是命令行,它们按照执行顺序排列。例如,如果你想要创建一个空的`.txt`文件,可以使用`touch`命令: ```bash #!/bin/bash touch mydata.txt ``` 这个脚本会生成一个名为`mydata.txt`的空文件。 然而,如果...

    Ubuntu系统的Shell命令及脚本编程

    介绍了变量与特殊字符、通配符与正则表达式、命令的执行顺序、I/O重定向与管道;通过例子说明了Shell脚本程序的编写、执行过程;重点介绍了逻辑表达式、条件语句、循环语句。

    分钟教你shell脚本入门PPT课件.pptx

    本资源摘要信息将 Shell 脚本入门的基础知识点总结,涵盖了 Shell 的定义、Bash shell 的特点、命令记忆能力、命令别名设置功能、编译型语言和脚本编程语言等方面。 什么是 Shell? Shell 又称命令解释器,是用户...

Global site tag (gtag.js) - Google Analytics