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

    测试内容

    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)
        time.sleep(10)
    print("测试1结束......")

    python2.py

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # @Time: 2020/3/27 16:49
    # @Author:  Damon
    # @Software: PyCharm
    
    print("测试2运行......")
    for i in range(10,16):
        print(i)
    print("测试2结束......")
    

    python3.py

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # @Time: 2020/3/27 16:51
    # @Author:  Damon
    # @Software: PyCharm
    
    import time
    
    print("测试3运行......")
    for i in range(16,26):
        print(i)
        time.sleep(100)
    print("测试3结束......")

    run.sh 

     

    #!/usr/bin/env bash
    
    echo "开始测试......"
    python /home/yckj2334/sh_batch/python1.py
    wait
    python /home/yckj2334/sh_batch/python2.py
    wait
    python /home/yckj2334/sh_batch/python3.py
    
    echo "结束测试......"
    
    
    
    
    #wait能等待前一个脚本执行完毕,再执行下一个条命令;
    #若需要批量不指定执行顺序,则将执行命令放在同一wait区域内即可

    执行

    chmod u+x run.sh #赋予脚本可执行权限
    sh run.sh

     

    执行结果 


    BUG

    #执行命令:sh run.sh 提示错误:
    
    
    run.sh: line 2: $'\r': command not found
    开始测试......
    run.sh: line 4: $'\r': command not found
    ': [Errno 2] No such file or directory4/sh_batch/python1.py
    ': [Errno 2] No such file or directory4/sh_batch/python2.py
    ': [Errno 2] No such file or directory4/sh_batch/python3.py
    run.sh: line 8: $'\r': command not found
    结束测试......
    

    解决

    shell脚本内容重新在linux环境下编辑一下即可,原本使用的run.sh内容是在win10下编辑好后复制上传到linux服务器中的。

    展开全文
  • bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html ..."符号也算命令连接符号,只不过它是将其前面的命令放入后台执行,所以可以变相地实现命令并行执行。 1.分号";" command1 ; c...

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html


    Linux中可以使用分号“;”、双and号“&&”和双竖线“||”来连接多个命令。单"&"符号也算命令连接符号,只不过它是将其前面的命令放入后台执行,所以可以变相地实现命令并行执行。

    1.分号";"

    command1 ; command2

    命令之间没有逻辑关系。分号连接的命令会按照顺序从前向后依次执行,但分号两端的命令之间没有任何逻辑关系,所有写出来的命令最终都会被执行,即使分号前面的命令出错也不影响后面的命令。

    [root@xuexi ~]# ls das;echo "hdakl"
    ls: cannot access das: No such file or directory
    
    hdakl

    2.&&

    command1  &&  command2

    逻辑与。&&连接的命令会按照顺序从前向后执行,但只有当command1正确执行才执行command2,如果command1不正确执行,则不执行command2。在bash中,通过预定义变量“$?”来判断命令是否正确执行,如果"$?"的值为0则表示前一条命令正确执行,其他任意值都表示不正确执行。\

    [root@xuexi ~]# echo "hdakl" && ls ds 
    hdakl
    ls: cannot access ds: No such file or directory
    [root@xuexi ~]# ls das && echo "hdakl"
    ls: cannot access das: No such file or directory

    3.||

    command1 || command2

    逻辑或。||连接的命令会按照顺序从前向后执行,但只有当command1不正确执行才执行command2,command1正确执行则不会执行command2。||和&&都是短路符号,符号左右的命令之间具有逻辑关系。

    [root@xuexi ~]# ls das || echo "hdakl" 
    ls: cannot access das: No such file or directory
    hdakl
    [root@xuexi ~]# echo "hdakl" || ls ds   
    hdakl

    一般要联合使用&&和||的时候,基本上都会先逻辑与再逻辑或command1 && command2 || command3。因为在实际中,command2和command3应该都是想要执行的命令。如果command1正确执行,$?就等于0,执行command2,再看情况执行command3,如果command1错误执行,$?就不等于0,所以不执行command2,根据$?为非0值,判断了 || 右边的命令应该被执行。

    通俗点的理解方法是根据语义判断。“如果...就...否则...就...”的语句使用“cmd1 && cmd2 || cmd3”,“如果不...就...否则...就...”使用“!cmd1 && cmd2 || cmd3”。

    例如,如果用户user1存在,就显示用户已经存在,否则,就添加此用户。

    [root@xuexi tmp]# id user1 && echo "user1 exists" || useradd user1

    如果用户user2不存在,则添加此用户,否则显示用户已存在。

    [root@xuexi tmp]# !id user2 && useradd user2 || echo "user2 exists"

    如果用户user3不存在,则添加此用户,并设定其密码为用户名本身,否则显示用户已存在。

    [root@xuexi tmp]# !id user3 && useradd user3 && echo "user3" | passwd --stdin user3 || echo "user3 exists"

    4.&

    command1 &

    command1 & command2

    &表示将其前面的命令放入后台执行,放入后台后会立即返回到bash环境让用户可以继续和bash交互。如果&符号连接了两个命令,则其前面的命令被放入后台,立即执行后面的命令,所以可以简单地认为这两个命令是并行执行的,两端的命令之间也没有任何逻辑关系。

    需要注意的一点是,在终端的bash环境下,子shell中的后台的进程不受终端控制,在终端被关闭时它会挂靠在init/systemd进程下,因此退出终端或脚本shell环境,无法中断这些后台进程。例如:

    [root@xuexi ~]# (sleep 10 &)     # 终端1上执行,立即关闭该终端
    
    [root@xuexi ~]# ps aux | grep slee[p]     # 终端2上捕捉sleep进程
    root 5732 0.0 0.0 107892 624 ? S 00:28 0:00 sleep 10

    注意ps结果中的"?",它表示非终端进程,即脱离了终端。

    转载于:https://www.cnblogs.com/f-ck-need-u/p/5915106.html

    展开全文
  • shell脚本顺序执行另几条shell命令

    万次阅读 2013-07-23 14:06:09
    它们可以从左到右顺序执行。此时,各条命令之间应以分号( ;)隔开. 如:  pwd ; who | wc -l ; cd /usr/bin 在相邻命令间可存在逻辑关系,即逻辑“与”和逻辑“或”。 逻辑与操作符“&&”; 其一般...

     命令执行操作符

    多条命令可以在一行中出现。它们可以从左到右顺序执行。此时,各条命令之间应以分号( ;)隔开.
    如:
       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脚本顺序执行和并发执行

    千次阅读 2019-02-26 11:37:55
    顺序执行 #!/bin/bash date for i in `seq 1 6` do { echo "sleep 2" sleep 2 } done date 并发执行并等待执行完成 #!/bin/bash date for i in `seq 1 6` do { echo "sleep 2" ...

    顺序执行

    #!/bin/bash
    date
    for i in `seq 1 6`
    do
    {
     echo "sleep 2"
     sleep 2
    }
    done
    date

    并发执行并等待执行完成

    #!/bin/bash
    date
    for i in `seq 1 6`
    do
    {
     echo "sleep 2"
     sleep 2
    }&
    done
    wait #等待执行完成
    date
    展开全文
  • Shell脚本执行命令生效顺序

    千次阅读 2018-12-06 00:25:41
    先赋予脚本文件执行权限,再直接运行 chmod 755 ./hello.sh ./hello.sh 通过Bash调用脚本文件 bash ./hello.sh 命令生效顺序 Linux系统下命令生效的顺序有以下4条: 绝对路径或相对执行命令; 别名; Bash的...
  • 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是一个命令行...
  • Shell脚本命令执行顺序

    万次阅读 2014-11-21 09:32:20
    相应的命令可以是系统命令shell脚本。Shell还提供了在当前shell或子shell中执行一组命令的方法,即使用()和{}。 1.使用&&: 形式:命令1 && 命令2 &&左边的命令(命令1)返回真(即返回0,成功被执行)后,...
  • Shell | 命令执行顺序

    千次阅读 2019-03-30 10:47:28
    执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除之前,你希望能够确信拷贝成功,否则就有可能...
  • spark-shell 执行脚本,批量执行命令 #!/bin/bash source /etc/profile exec spark-shell --name spark-sql-test --executor-cores 8 --executor-memory 8g --num-executors 1 --conf spark.cleaner.ttl=240000 ...
  • shell 命令执行顺序

    千次阅读 2017-07-06 03:43:40
    shell 命令执行顺序shell执行命令的步骤顺序如上图,看起来有些复杂。 当命令行被处理时,每一个步骤都是在Shell的内存里发生的;Shell不会真的把每个步骤的发生显示给你看。 所以,你可以假想这事我们偷窥Shell...
  • Shell 脚本常用命令

    千次阅读 2019-07-31 19:32:50
    Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook。在工作过程中整理了一下,贴在这里已备查看。 1 Shell中的特殊符号 1.1 $ 美元符号。用来表示变量的值。如变量...
  • shell 一次按顺序执行多脚本

    千次阅读 2019-10-04 04:05:56
    #!/bin/bashsh 全路径/1.shsh 全路径/2.shsh 全路径/3.shsh 全路径/4.sh 转载于:https://www.cnblogs.com/ningmengcaokanyu/p/10839098.html
  • shell脚本中,我们希望一些命令能按顺序执行,且根据前面命令的执行结果来后面的命令。我们可以用&amp;&amp;、||等符号完成上述功能。 &amp;&amp;符号作用 &amp;&amp;符号的使用形式: ...
  • 上下键重复执行命令;2.tab键自动补齐;3.提供有用的环境变量;4.批处理。 shell脚本文件建议以.sh为后缀。 其实vim创建文本文件时,对名字无要求,但最好规定格式。 echo $SHELL(输出为/bin/bash) 可以查看系统...
  • 概述: 1.什么是shell? shell是linux的一个外壳,它包在linux内核的外面,为用户和内核之间的交互提供了一个接口。...2.什么是shell脚本? 简单的来说,当命令或者程序不在命令行执行,而是通过一个程...
  • shell脚本命令解析过程】

    千次阅读 2018-06-16 10:24:55
    必须要知道命令解析过程的意义在于:能够清楚的知道命令解析步骤。若发生错误时,能够知道该怎样更改。 比如在博客:I/O重定向(点击打开链接)的举例:例①中,就有因为不知道命令行是如何读取的,而造成while语句...
  • (最近开发的项目中需要编写Shell脚本对整个工程进行自动化编译,即在Shell脚本中使用make命令来进行编译,下面回顾一下Shell脚本中如何使用make命令) 在开发一个系统时,一般是将一个系统分成几个模块,这样做...
  • Linux Shell脚本编程--scp命令详解

    万次阅读 2013-08-21 00:15:16
    linux之scp命令  命令:scp 不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。 第二种方法就是采用samba服务,...
  • shell脚本定时执行php程序

    千次阅读 2019-03-04 14:55:28
    其实很简单的,在做开发的过程中可能会遇到一些情况需要...然后我们写一个shell脚本执行这个php程序 就单纯的一个执行php程序的shell就写好了,然后咱们运行一下 好,显示插入成功,证明这个shell是可以执行的...
  • Shell脚本中的任务并发执行

    千次阅读 2019-06-16 10:55:27
    正常情况下,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 可以...
  • linux shell脚本 mysql多行命令执行

    千次阅读 2015-07-20 11:48:50
    shell脚本中,通常将EOF与 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。 因此数据库连接和sql语句执行的脚本如下:#!/bin/sh mysql -u root -pcloud <<EOF 2>
  • Shell-使用&和wait让你的脚本并行执行

    万次阅读 多人点赞 2019-02-19 21:57:56
    假定业务上个业务逻辑没有先后关系,每个脚本执行时间也很长 ,推荐并行执行。 一般情况下,我们会把每个业务逻辑写到一个单独的脚本里,在服务器上逐一调用,每次都要手工去敲命令。 如果我们把这些脚本放到一个...
  • shell执行多命令的方法

    千次阅读 2018-11-22 09:30:06
    shell执行多命令的方法 1、在命令行中同时输入个语句: 直接在linux命令行中可以依次执行多命令命令间可采用“;”、“&amp;amp;&amp;amp;”和&quot;||&quot;分割,三个分隔符作用...
  • 命令行替换 (1)反引号字符(`) 示例 test=`date` !/bin/bash test=`date` echo &amp;quot;The date and time are: &amp;quot; $test (2)$()格式 示例 ...$t...
  • 这个需求主要是我在jenkins中pipeline的代码里,需要使用shell语言执行远程连接并且部署的工作,但是大多数的shell和服务器交互是使用expect解释器 就是之前我写过的那个关于expect有关的文章,问题是jenkins中默认...
  • 最近开发的项目中需要编写Shell脚本对整个工程进行自动化编译,即在Shell脚本中使用make命令来进行编译,下面回顾一下Shell脚本中如何使用make命令)  在开发一个系统时,一般是将一个系统分成几个模块,这样做...
  • Date: 2018.10.16 前言 ...    在编写shell脚本或者makefile脚本时,运行成功往往需要经过一番调试,定位问题所在需要一些调试方法,本文旨在讲述makefile脚本或者shell脚本中的几种调试方法。
  • 文章目录shell管道"|"shell并行执行"&"shell串行执行"&&" shell管道"|" 管道用法: command1 | command2 | command3 等等 用法举例: [root@hadoop-master shell-test]# ps -ef|grep java root 5304 ...
  • shell脚本基本语法详解

    万次阅读 多人点赞 2016-09-28 20:16:04
    编写shell脚本的时候,最前面要加上一行:#!/bin/bash,因为linux里面不仅仅只有bash一个解析器,还有其它的,它们之间的语法会有一些不同,所以最好加上这一句话,告诉系统要用这个解析器。一.shell变量shell变量和...

空空如也

1 2 3 4 5 ... 20
收藏数 63,185
精华内容 25,274
关键字:

多shell脚本顺序执行命令