美文网首页jmeter收藏
Linux shell编程模板

Linux shell编程模板

作者: robot_test_boy | 来源:发表于2021-11-22 00:02 被阅读0次

    只要会写Linux命令,就可以写shell脚本。

    之前基本上写的shell脚本都是Linux命令的组合,最多加入if else或while循环,连函数都没过。

    最近发现shell函数还是有必要的,而且函数一般是抽象后的,可以反复调用,大大简化了脚本。

    先上个模板,然后依依拆解,后续如何套用模板。

    简单模板

    #!/usr/bin/bash
    function funname(){
          echo "第一个参数 $1"
          echo "第一个参数 ${10}"
          action
          return int
    }
    function ifelse(){
    if condition1
    then
        command1
    elif condition2
    then
        command2
    else
        commandN
    fi
    }
    function whiledone(){
    while condition
    do
        command
    done
    }
    function caseesac(){
    case 值 in
    模式1)
        command1
        ...
        commandN
        ;;
    模式2)
        comman1
        ...
        commandN
        ;;
    esac
    }
    funname test robot boy

    简单示例

    #!/usr/bin/bash
    contain=("test" "robot" "boy")
    function query(){
        echo " 这是第一个参数 $1 "
        if  [ $1 == "test" ]
        then
            echo "输入参数$1 是test"
            num=`docker ps | grep $1 | wc -l`
            name=`docker ps | grep $1 | awk -F ' ' '{print $NF}'`
        elif [ $1 == "robot"  ]
        then
            echo "输入参数$1 是robot"
            num=`docker ps | grep $1 | wc -l`
            name=`docker ps | grep $1 | awk -F ' ' '{print $NF}'`
        else
            echo "输入参数$1 既不是test,也不是robot"
            num=`docker ps | grep $1 | wc -l`
            name=`docker ps | grep $1 | awk -F ' ' '{print $NF}'`
            fi
    }
    function main(){
        for i in ${contain[*]}
        do
              query $i
              echo $num
              echo $name
        done
    }
    main

    shell 定义一个数组

    Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。数组元素的下标由 0 开始。

    Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下

    array_name=(value1 value2 ... valuen)

    获取数组中所有元素${array_name[*]}或${array_name[@]}

    获取数组长度的方法${#array_name[*]}或${#array_name[@]}

    a=(f1 f2 f3 f4)
    for i in ${a[*]}或for i in ${a[@]}

    shell定义一个函数

    function funname(){
          echo "第一个参数 $1"
          echo "第一个参数 ${10}"
          action
          return int
    }

    return后跟数值n(0-255),如果不加,将以最后一条命令的运行结果作为返回值。

    函数传参:在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值。注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

    $#  传递到脚本或函数的参数个数

    $* 以单字符串显示向脚本传递的所有参数

    $$ 脚本运行的当前进程ID号

    $! 后台运行的最后一个进程的ID号

    $@  与$*相同,但是使用时加引号,并在引号中返回每个参数。

    $- 显示Shell使用的当前选项,与set命令功能相同。

    $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

    if elif else fi条件

    if condition
    then
        command1
        ...
        commandN
    fi
    if condition1
    then
        command1
    elif condition2
    then
        command2
    else
        commandN
    fi

    for循环

    for i in itm itm2 itm3
    do
        echo $i
    done

    while循环

    while condition
    do
        command
    done

    break命令允许跳出所有循环(终止执行后面的所有循环)。continue命令与break命令类似,它不会跳出所有循环,仅仅跳出当前循环。

    case ... esac

    多选择语句,与其他语言中的switch ... case语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case ... esac 语句,esac(是case反过来)作为结束标记。

    case 值 in
    模式1)
        command1
        ...
        commandN
        ;;
    模式2)
        comman1
        ...
        commandN
        ;;
    esac

    Shell 文件引用

    和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。

    Shell 文件包含的语法格式如下:

    . filename  # 注意点号(.)和文件名中间有一空格

    或source filename

    相关文章

      网友评论

        本文标题:Linux shell编程模板

        本文链接:https://www.haomeiwen.com/subject/cyrctrtx.html