zoukankan      html  css  js  c++  java
  • linux脚本编程技术

                        linux脚本编程技术

     一、什么是脚本

      脚本是一个包含一系列命令序列的可执行(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)
    2. 判断整数a是否大于整数b:if [ $a -gt $b]
    3. 比较字符串a和b是否相等:if [ $a = $b]
    4. 判断字符串a是否为空: if [ -z $a]
    5. 判断整数变量a是否大于b:if [ $a -gt $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,$d’ tmp.txt 删除第3行到最后一行,$:最后一行
    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 找到匹配内容时所执行的命令
    范例:
      

  • 相关阅读:
    linux软件安装方式
    docker 安装 jenkins touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    [ERR] Node goodsleep.vip:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    Linux 常用命令 服务器间scp 用户 export 创建文件、软连接
    redis 安装 集群 主从 哨兵 docker
    WPF密码框中禁止复制、粘贴
    Application 统计在线人数
    【转义字符】HTML 字符实体&lt; &gt: &amp;等
    SQL语句统计每天的数据
    正则表达式计算代码数
  • 原文地址:https://www.cnblogs.com/wmx-learn/p/5318741.html
Copyright © 2011-2022 走看看