获取执行上一个指令的返回值
-x
进入跟踪方式,显示所执行的每一条命令
$ ps aux |wc -l
a.要求能判断当前linux系统的发布版,是Ubuntu、Centos、Fedora、SUSE等
$ grep -i '^NAME' /etc/os-release | cut -d\" -f2
a.从命令行接收两个数,以及逻辑运算符(>、>=、<、<=、==、!=),打印判断结果 b.例如: bash 脚本名 数字1 <= 数字2
#!/bin/bash#Author:zhongxinread -p "请输入数字1:" num1read -p "请输入比较符号:" checkread -p "请输入数字2:" num2if test $check = '>=' then check='-ge'fiif test $check = '<=' then check='-le'fiif test $check = '!=' then check='-ne'fiif [ ${num1} ${check} ${num2} ]then echo "正确"else echo "错误"fi
a.输入4个大于0小于等于20的数字,统计它们的和、最小的数字和最大的数字 b.要求有异常数字校验
#!/bin/bash#Author:zhongxinmax=$1min=$2sum=0if [[ $# -ne 4 ]];then echo "请输入4个数字" exit 1fifor 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 fidone echo "最大值:$max" echo "最小值:$min" echo "和:$sum"
文本处理工具,处理数据并生成结果报告
awk‘BEGIN{}pattern{commands}END{}’file
some command|awk‘BEGIN{}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
%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.awkBEGIN{ 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