測試開發進階(四十二)


linux中“$?”標記有什麼作用?

獲取執行上一個指令的返回值

  • 0:成功

  • 非0:失敗

如何調試shell腳本 ?

-x進入跟蹤方式,顯示所執行的每一條命令

查看系統當前進程連接數?

$ ps aux |wc -l

編寫如下shell程序

a.要求能判斷當前linux系統的發佈版,是Ubuntu、Centos、Fedora、SUSE等

$ grep -i '^NAME' /etc/os-release | cut -d\" -f2

編寫如下shell程序

a.從命令行接收兩個數,以及邏輯運算符(>、>=、<、<=、==、!=),打印判斷結果

b.例如: bash 腳本名 數字1 <= 數字2

#!/bin/bash
#Author:zhongxin
read -p "請輸入數字1:" num1
read -p "請輸入比較符號:" check
read -p "請輸入數字2:" num2
if test $check = '>='
    then
    check='-ge'
fi
if test $check = '<='
    then
    check='-le'
fi
if test $check = '!='
    then
    check='-ne'
fi
if [ ${num1} ${check} ${num2} ]
then
    echo "正確"
else
    echo "錯誤"
fi

編寫如下shell程序

a.輸入4個大於0小於等於20的數字,統計它們的和、最小的數字和最大的數字

b.要求有異常數字校驗

#!/bin/bash
#Author:zhongxin
max=$1
min=$2
sum=0
if [[ $# -ne 4 ]];then
    echo "請輸入4個數字"
    exit 1
fi
for i in $@
do
    if [[ $i -gt 0 ]] && [[ $i -le 20 ]] ;then
        if [ $max -lt $i ];then
            max=$i
            fi
            if [ $min -gt $i ];then
            min=$i
        fi
        let sum+=i
    else
        echo "請輸入大於0小於等於20的數字"
        exit 1
    fi
done
    echo "最大值:$max"
    echo "最小值:$min"
    echo "和:$sum"

awk

文本處理工具,處理數據並生成結果報告

  • awkBEGIN{}pattern{commands}END{}’file

  • some command|awkBEGIN{}pattern{commands}END{}’

BEGIN處理數據之前執行

pattern匹配模式

commands處理的命令

END處理數據之後執行

內置變量

  • $0整行內容

  • $1~$n當前行的第1~n個字段

  • NF當前行字段數

  • NR當前行號,從1開始

  • FS輸入字段分割符,默認爲空格或tab鍵

  • RS輸入行分割符,默認爲回車符

  • OFS輸入字段分割符,默認爲空格

  • ORS輸入行分割符,默認爲回車符


輸出以 :分割的最後一列內容

$ awk 'BEGIN{FS=":"} {print $NF}' passwd

輸出以 :分割的 games開頭的行到 new開頭的行的最後一列內容

$ awk 'BEGIN{FS=":"}/^games/,/^new/{print $NF}' passwd

printf格式符

  • %s字符串

  • %d十進制數字

  • %f浮點數

  • +右對齊

  • -左對齊


%s\n的格式輸出

$ awk 'BEGIN{FS=":"}/^games/,/^new/{printf "%s\n" , $1}' passwd
$ awk 'BEGIN{FS=":"}/^games/,/^new/{printf "%20s\n" , $1}' passwd
$ awk 'BEGIN{FS=":"}/^games/,/^new/{printf "%20s  %s\n" , $1,$NF}' passwd

$ awk 'BEGIN{FS=":"}/^games/,/^new/{printf "%-20s\t%-20s\n" , $1,$NF}' passwd

格式化輸出以s開頭的行好和第一列內容

$ awk 'BEGIN{FS=":"}/^s/{printf "%d\t%-10s\n" , NR,$1}' passwd

格式化輸出第三例大於100的內容

$ awk -F ":" '$3 > 100 {printf "%-10s\t%-10s\n",$1,$(NF-1)}' passwd

添加頭部和尾部

$ awk -F ":" 'BEGIN{printf "%-10s\t%-10s\n","username","path"}$3 > 100 {COUNT++;printf "%-10s\t%-10s\n",$1,$(NF-1)}END{printf "%-10s\t%-10s\n","totally",COUNT}' passwd

使用文件

# awk1.awk
BEGIN{
    printf "%-20s\t%-20s\n","UserName","Path"
}
{
    if ($3 > 100){
        COUNT++
        printf "%-20s\t%-20s\n",$1,$(NF-1)
    }
}
END{
    printf "%-20s\t%-20s\n","Totally",COUNT
}
$ awk -F ':' -f awk1.awk  passwd

日誌分析

獲取每個測試人員執行的用例數

BEGIN{
    printf "%-10s%-10s\n","Tester","TotalTestcases"
}
{
    USERS[$4] += 1
}
END{
    for (u in USERS){
        printf "%-10s%-10s\n",u,USERS[u]
    }
}
$ awk -f 1201.awk testcases.log

統計每位測試人員執行用例成功和失敗的總數

BEGIN{
    printf "%-10s%-12s%-12s\n","Tester","PassTotal","FailTotal"
}
{   
    if ($5 == "Pass"){
        SUCCESS[$4] += 1
    }
    else if($5 == "Fail"){
        FAIL[$4] += 2
    }
    USERS[$4] += 1
}
END{
    for (u in USERS){
        printf "%-10s%-12s%-12s\n",u,SUCCESS[u],FAIL[u]
    }
}
$ awk -f 1201_2.awk testcases.log

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章