jmeter收藏

Linux shell编程模板

2021-11-22  本文已影响0人  robot_test_boy

只要会写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

上一篇下一篇

猜你喜欢

热点阅读