• linux脚本编程技术---8


     一、什么是脚本

      脚本是一个包含一系列命令序列的可执行(777)文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到自动执行。

    二、脚本编程

      #!/bin/sh 首行固定格式

      #!表明该脚本的的解析器,这里使用/bin/sh来解析

    2.1变量

      shell脚本允许用户设置和使用自己的变量,变量可以是数字或者字符串,用户无需指定其类型,也无需在使用前定义。

      #!/bin/sh
      a="hello world"

      b=5
      echo “A is: a  //使

    符号

      echo “B is $b”

    2.2参数

      同C程序一样,shell本中也可以使用命令行参数

    1. $#:传入脚本的命令行参数个数
    2. $*:所有命令行参数值,在各个参数值之间留有空格
    3. $0:命令本身(shell文件名)
    4. $1:第一个命令行参数
    5. $2:第二个命令行参数

    2.3数学计算

      shell脚本提供了一个专门的命令expr来计算数学表达式,例如expr 5 +1,但是当要把计算的结果赋值给其他变量的时候,还必须使用反号(键盘上~按键就是反引号)。

      var=`expr 20 / 10`

    2.4if语句

      shell脚本中最基本的流程控制语句就是if-then,使用格式:

      if [ condition ] (特别提醒:方括号左右两边必须有空格)

      then
        commands
      else
        commands
      fi

    2.4.1for语句

      shell脚本提供了for命令,用于创建类似于c语言编程中for语句一样的循环。使用格式:

      for var in list
      do
      commands
      done

    2.4.2while语句

      shell脚本提供了while命令,用于创建类似于c语言编程中while语句一样的循环。使用格式:

      while [ condition ]
      do
      commands
      done 

    2.5条件比较

      比较操作     整数操作   字符串操作
      相同       -eq       =
      不同       -ne       !=
      大于       -gt       >
      小于       -lt        <
      大于或等于     -ge
      小于或等于     -le
      为空       -z
      不为空       -n

    例:

    1. 比较整数a和b是否相等:if [ a=
    • b ] (也可用eq)
    • 判断整数a是否大于整数b:if [ agt
    • b]
    • 比较字符串a和b是否相等:if [ a=
    • b]
    • 判断字符串a是否为空: if [ -z $a]
    • 判断整数变量a是否大于b:if [ agt
    1. b]

    注意:
      1. 在“[”和“]”符号的左右都留有空格
      2. “=”左右都有空格

      -e 文件已经存在
      -f 文件是普通文件
      -s 文件大小不为零
      -d 文件是一个目录
      -r 文件对当前用户可以读取
      -w 文件对当前用户可以写入
      -x 文件对当前用户可以执行
      

    2.6sed编辑器

      Sed(Stream Editor) : 流式编辑器又名行编辑器,每次只编辑一行,使用格式如下:

      sed [操作选项] ‘命令’ 文件名
    常用操作选项:
      -n∶指定处理后只显示该行
      -n∶指定处理后只显示该行
      -e∶进行多项编辑任务
      -i∶直接修改读取的文件内容,而不是由屏幕输出

    常用命令选项:

      p 打印匹配行
      a 新增
      c 替代一行
      d 删除定位行
      s 替代一行中的某些部分

    2.6.1sed-范例

    1. 显示
      •sed -n '2p' tmp.txt 只显示第2行
      •sed -n '1,3p' temp.txt 打印第1行到第3行
      •sed -n '/mov/'p temp.txt 打印含movie的行
    2. 删除
      •sed ‘2d’ tmp.txt 删除第2行
      •sed ‘3,dtmp.txt3

    :最后一行
    3. 查询
      sed -n ‘/hello/p’ tmp.txt 查询包括关键字hello的所有行

    4. 代替
      •sed ‘1c Hi’ tmp.txt 第1行代替为Hi
      •sed -n '/hello/p' tmp.txt | sed 's/hello/bird/g'
    5. 插入
      •sed -i ‘$a bye’ tmp.txt 在最后一行插入bye

    2.6.2awk分析器

      awk是一个强大的文本分析工具,它把文件逐行的读入,以空格为默认分隔符将每行分割为多个字段。

    使用方式:
      awk ‘{pattern + action}' filenames
      pattern 要查找的内容
      pattern 要查找的内容
      action 找到匹配内容时所执行的命令
    范例:
      

  • 相关阅读:
    Matlab产生随机序列,并采样
    LaTex的常用编辑
    傅里叶级数(FS)以及FT、DTFT、DFS和DFT
    uint32_t
    string
    const char * char const * char * const
    CString
    UNICODE与ANSI的区别
    MFC中输出string;
    assert
  • 原文地址:https://www.cnblogs.com/zxouxuewei/p/5380638.html
Copyright © 2020-2023  润新知