• shell基础概念, if+命令, shell中引用python, shell脚本的几种执行方式


    说明: 虚拟机中shell_test目录用来练习shell, 其中有个test.log文件用来存放日志

    #!/usr/bin/bash      # shell文件开头, 用来指定该文件使用哪个解释器执行

     通常#!成为shebang, 如果命令行中不指定解释器时才会生效, 否则以命令行中指定的解释器为准

    1. echo $?    # 用来检查上次命令的执行状态, 如成功返回0, 不成功则非0

    2. ping -c10 www.baidu.com &> /shell_test/test.log && echo "ping 成功执行了" || echo "ping执行失败了"

      -c10  # 表示使用本机ping后面的网址10次

      &>    # 表示把命令执行的经过输入到指定的位置

      &&    # 命令执行成功后要干的事, 可理解为if true

      ||       # 命令执行失败后要干的事, 可理解为else

    3. linux命令都可以放入文件中通过bash调用来执行, 或者把文件设置为可执行文件, 比如2中的命令放到

     qzq.sh文件中, 在命令行可使用: bash qzq.sh来调用, 其会自动执行文件中列出的命令, echo的内容会

     输出到窗口, 执行过程中的输出会写入到$>指定的地方.

     补充: 使用sh来调用执行可以, sh可理解为bash的软连接; 修改文件属相使用chmod命令. chmod 777 qzq.sh

    4. if判断书写规范, if后跟条件或命令, 条件时需使用[], 条件true时执行then后逻辑. 如果跟命令, 则在命令成功

     执行后走then逻辑, 注意使用命令时不能使用[]. 编写规范如下(then可和if在一行;建议使用4个空格区分逻辑):

     

    5. 在一段shell脚本中, 如何在中间插入执行一段python代码呢?

     /usr/bin/python << -EOF print("hello world") EOF   # 把需要执行的python脚本重定向到python解释器中即可.

     EOF就是个标记, 需要大写且成对, 可换成任意字母都行,通常结束位置的标记需要放到单独一行的行首.

        -的用处可使得结束位置标记前可以有空格, 即不从行首开始.

     特别注意: EOF前有-时, 和输出重定向符号之前绝对不能有空格, 否则会报错的.

     

    6. 一个有执行权限的shell脚本还可以通过 . qzq.sh  或者 source qzq.sh来执行, 区别如下: 使用相对位置执行或

     bash或sh时, 如shell中有cd目录, 这3中执行方式的窗口路径不会发生改变.因为是在sub shell 即子shell中执行;

     而. 或者source是在当前目录中执行脚本中的命令.

  • 相关阅读:
    第一个MIPS汇编
    选你所爱,爱你所选
    海明码(汉明码)的工作机制
    第一个x86汇编程序
    机器学习 coursera【week1-3】
    描述符应用与类的装饰器
    多态,封装,反射,类内置attr属性,os操作复习
    面向对象操作
    类属性的增删改查,类属性和实例属性
    os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法
  • 原文地址:https://www.cnblogs.com/quzq/p/11762218.html
Copyright © 2020-2023  润新知