2021-04-27

27、实现杨辉三角
#!/bin/bash
# File Name: Ynaghui.sh
read -p "请输入杨辉三角的1-10层数: " n
declare -a YH
for i in `eval echo {1..$n}`;do
    for j in `seq $i`;do
        if [ $j -eq 1 -o $j -eq $i ];then
            #必须定义YH[$i$j]=1,因为else后的参数依赖
            YH[$i$j]=1
            echo -n "${YH[$i$j]} "
        else
            x=${YH[$[$i-1]$[$j-1]]}
            y=${YH[$[$i-1]$j]}
            
            YH[$i$j]=$[x+y]
            echo -n "${YH[$i$j]} "  
        fi
    done
    echo
done
28、查询300s内使用cpu和mem最多的程序
#!/bin/bash
# File Name: mem_300.sh
[ -e /tmp/mem.log -o -e /tmp/cpu.log ] && { echo "请移动tmp/mem.log、/tmp/cpu.log到其他路径";exit;}                                  
    
for i in `seq 300`;do
    if [ $i -eq 1 ];then
        ps aux k -%mem |sed -n "1,4p" >> /tmp/mem.log
        ps aux k -%cpu |sed -n "1,4p" >> /tmp/cpu.log
    else    
        ps aux k -%mem |sed -n "2,4p" >> /tmp/mem.log
        ps aux k -%cpu |sed -n "2,4p" >> /tmp/cpu.log
    fi      
    sleep 1 
done    

echo "300s内存使用多的程序是:"
awk 'NR==1{printf "%6s %10s\n",$2,$11}' /tmp/mem.log
awk 'NR!=1{num[$2"   "$11]++;}END{for(i in num){print num[i],i,cmd[i]}}' /tmp/mem.log |sort -rn

echo
echo "300sCPU使用最高的程序是:"
awk 'NR==1{printf "%6s %10s\n",$2,$11}' /tmp/cpu.log
awk 'NR!=1{num[$2"   "$11]++;}END{for(i in num){print num[i],i,cmd[i]}}' /tmp/cpu.log |sort -rn

rm -rf /tmp/mem.log
rm -rf /tmp/cpu.log
29、根据/proc/net/dev实时监控网络状态
#!/bin/bash
# File Name: network_monitor.sh
fun_usage ()
{
echo "usage $0"
echo "usage $0 eth* 2"
exit 1
}

#数组赋值ETH=(`CMD`)
ETHNUM=`ip a|awk -F'[ :]+' '/^[0-9]+/'|wc -l`
ETH=(`ip a|awk -F'[ :]+' '/^[0-9]+/{print $2}'`)
TIME=$2
eth=$1

#判断输入的参数是否合法
if [ $# -eq 2 ];then
    if [[ $2 =~ ^[0-9]+$ ]];then
        for i in `eval echo {0..$ETHNUM}` ;do
            [[ $1 == ${ETH[$i]} ]] && a=1 || b=0
        done
        [[ $a == 1 ]] || fun_usage
        else
            fun_usage
    fi
else
    fun_usage
fi

#两次查询的值相减
RX1=$(cat /proc/net/dev |awk /$1/'{print $2}')
TX1=$(cat /proc/net/dev |awk /$1/'{print $10}')

while :;do
#{}变量()命令[]判断
sleep ${TIME}

#引用变量不能使用 '/$1/{print $2}'
RX=$(cat /proc/net/dev |awk /$1/'{print $2}')
TX=$(cat /proc/net/dev |awk /$1/'{print $10}')
echo "echo "Recv rate: $[($RX-$RX1)/$2] B/s   Sent rate:  $[($TX-$TX1)/$2] B/s ""

RX1=${RX}
TX1=${TX}
done
30、用文件名做为参数,统计所有参数文件的总行数
#!/bin/bash
# File Name: count_file_line.sh
[ -d $1 -o $# -eq 0 ] && echo "usage: $0 [ *|directory/* ]" 

for i in "$@";do
[ -f $1 ] || { echo "$1 is not file";shift;continue; }

wc -l $1
shift
done
31、函数实现执行结果为ok或fiaied
#!/bin/bash
# File Name: print_ok_failed.sh
fun_ok_failed ()
{
if [ $? -eq 0 ];then
   { echo -e "\E[1;32m$0\t\t\t\t\t  [ ok ]\E[0m";exit; }
else
   { echo -e "\E[1;31m$0\t\t\t\t\t  [ failed ]\E[0m";exit; }
fi
}
32、实现脚本创建位置变量后的用户
#!/bin/bash
# File Name: useradd.sh 
[ $# -eq 0 ] && { echo "esage : $0 user...";exit; }

for i in `eval echo {1.."$#"}`;do
useradd $1
shift
done
#!/bin/bash
# File Name: useradd.sh 
#使用变量间接引用
[ $# -eq 0 ] && { echo "esage : $0 user...";exit; }

for i in `eval echo {1.."$#"}`;do
#$i=1,需要使用变量赋值
user=${!i}
id $user &> /dev/null && echo $user is exist || { useradd $user;echo $user is created; }
don
33、等腰三角形
#!/bin/bash
# File Name: isosceles_triangle.sh
read -p "请输入等腰三角形的行数: " line
for i in `eval echo {1.."$line"}`;do
    #输出空格,空格数量随着行数的增加而减少
    for (( k=1;k<=line-i;k++ ));do
        echo -e " \c"
    done
    #输出内容,内容是需要时奇数才能实现等腰
    for (( j=1;j<=2*i-1;j++ ));do
        echo -e '*\c' 
    done
    echo
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值