zoukankan      html  css  js  c++  java
  • shell编程(二)

    常见的命令详解:

    1.grep 命令详解

    定义:grep命令是我们常用的一个强大的文本搜索命令

    格式:grep [参数] [关键字] <文件名>

    参数: -c: 输出匹配到的关键字的参数

    -n: 显示匹配行和行号

    -v: 显示不包含匹配文件的所有内容

    -i:不区分大小写

    精确定位错误代码:grep -nr [错误关键字] *

    2. sed 命令详解

    定义:sed命令是行文件编辑工具。因为它编辑文件是以行为单位的。

    格式:sed [参数] '<匹配条件> [动作]' [文件名]

    参数: 1.参数为空:不对文件进行编辑

    2.参数为 -i :表示对文件进行编辑

    动作详解:

    -a 在匹配到的内容下一行增加内容

    -i 在匹配到的内容上一行增加内容

    -d 删除匹配到的内容

    -s 替换匹配到的内容

    替换:

    命令格式: sed -i [替换格式] [文件名]

    注意:替换命令的写法:'s###'  --->  's#原内容##' ---> 's#原内容#替换后内容#'

    增加:

    2.1.在指定行号的下一行增加内容

    下一行增加:sed -i '行号a增加的内容' 文件名

    增加多行:sed -i '1,3a增加内容' 文件名

    2.2.在指定行号的当前行增加内容

    指定一行增加:sed -i '行号i增加的内容' 文件名

    指定多行增加: sed -i '1,3a增加内容' 文件名

    删除:

    2.1.指定行号删除: sed -i '行号d' 文件名

    2.2删除多行: sed -i '1,3d' 文件名

    3.awak命令详解

    定义:awk是一个功能非常强大的文档编辑工具,它不仅能以行为单位还能以列为单位处理文件。

    格式:awk [参数] '[ 动作]' [文件名]

    常见参数: -F 指定行的分隔符

    常见动作: print 显示内容

    $0 显示当前行所有内容

    $n 显示当前行的第n列内容,如果存在多个$n,它们之间使用逗号(,)隔开

    常见内置变量: FILENAME 当前输入文件的文件名,该变量是只读的

    NR 指定显示行的行号

    NF 输出 最后一列的内容

    OFS 输出格式的列分隔符,缺省是空格

    FS 输入文件的列分融符,缺省是连续的空格和Tab

    4. find 命令详解

    格式:find [路径] [参数] [关键字]

    参数: -name 按照文件名查找文件。

    -perm 按照文件权限来查找文件。

    -user 按照文件属主来查找文件。

    -group 按照文件所属的组来查找文件。

    -type 查找某一类型的文件,(d--目录,f--普通文件)

    流程控制:

    单分支if语句

    (单一条件,只有一个输出)

    #!/bin/bash
    # 单if语句的使用场景
    if [ "$1" == "nan" ]
    then
       echo "您的性别是 男"
    fi

    双分支if语句

    (一个条件,两种结果)

    #!/bin/bash
    # 单if语句的使用场景
    if [ "$1" == "nan" ]
    then
       echo "您的性别是 男"
    else
       echo "您的性别是 女"
    fi

    多分支if语句

    (n个条件,n+1个结果)

    #!/bin/bash
    # 单if语句的使用场景
    if [ "$1" == "nan" ]
    then
       echo "您的性别是 男"
    elif [ "$1" == "nv" ]
    then
       echo "您的性别是 女"
    else
       echo "您的性别,我不知道"
    fi

    case 选择语句

    (在多if语句的基础上对脚本进行升级)

    # cat case.sh
    #!/bin/bash
    # case语句使用场景
    case "$1" in
    "start")
    echo "服务启动中..."
    ;;
    "stop")
    echo "服务关闭中..."
    ;;
    "restart")
    echo "服务重启中..."
    ;;
    *)
    echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
    ;;
    esac

    for 循环语句

    (循环指定的所有元素,循环完毕之后就退出)

    #!/bin/bash
    # for语句的使用示例
    for i in $(ls /root)
    do
      echo "${i}"
    done

    while 循环语句

    (只要条件满足,就一直循环下去)

    #!/bin/bash
    # while的示例
    a=1
    while [ "${a}" -lt 5 ]
    do
       echo "${a}"
       a=$((a+1))-->相当于a+=1
    done

    until 循环语句:

    (只要条件不满足,就一直循环下去)

    #!/bin/bash
    # until的示例
    a=1
    until [ "${a}" -eq 5 ]
    do
       echo "${a}"
       a=$((a+1))
    done

    shell里边函数的基础知识

    简单函数:

    定义函数:

    函数名(){

    函数体

    }

    调用函数:

    函数名

    传参函数:

    传参数:函数名 参数

    函数体调用参数:

    函数名( ){

    函数体 $n

    }

    阶段综合案例

    #!/bin/bash
    # 定义本地变量
    arg="$1" 
    # 脚本帮助信息
    usage(){
      echo "脚本 $0 的使用方式是: $0 [ start|stop|restart ]"
    } 
    # 函数主框架
    if [ $# -eq 1 ]--->参数数量
    then
      case "${arg}" in
        start)
          echo "服务启动中..."
        ;;
        stop)
          echo "服务关闭中..."
        ;;
        restart)
          echo "服务重启中..."
        ;;
        *)  -->其他情况
          usage
        ;;
      esac
    else                   
      usage --->帮助信息
    fi    
  • 相关阅读:
    dotnet 使用 MessagePack 序列化对象
    dotnet 使用 MessagePack 序列化对象
    PHP die() 函数
    PHP defined() 函数
    PHP define() 函数
    PHP constant() 函数
    PHP connection_status() 函数
    查看物理CPU个数、核数、逻辑CPU个数
    CF997C Sky Full of Stars
    dotnet 使用 lz4net 压缩 Stream 或文件
  • 原文地址:https://www.cnblogs.com/mengxinfeng/p/12545547.html
Copyright © 2011-2022 走看看