shell脚本编程规范小案例-有趣的小例子!

时间:2020-12-15 04:25:28

1.编写一个小脚本程序sumsquare.sh,计算两个整数的平方和。例:执行sumsquare.sh 3 4时,输出结果为25

[www.ae.com@ ~]# vi sumsquare.sh-1.0

#!/bin/bash

#计算两个整数的平方和

echo "$1和$2的平方和是" `expr $1 \* $1 + $2 \* $2`    

------上面这句也可以换成   echo "$1和$2的平方和是" $(( ($1*$1) + ($2*$2) ))  效果相同

[www.ae.com@ ~]# sh sumsquare.sh-1.0 3 4  

shell脚本编程规范小案例-有趣的小例子!

2.编写一个小脚本程序memusage.sh,根据Free命令的结果结算内存占用率。

[www.ae.com@ ~]# vi memusage.sh

#!/bin/bash
USED=$(free | grep "Mem:" | awk '{print $4}')
TOTAL=$(free | grep "Mem:" | awk '{print $2}')
USAGE=$(expr $USED \* 100 / $TOTAL)

echo "memusage:$USAGE%"

shell脚本编程规范小案例-有趣的小例子!

3.编写一个名为chkversion.sh的脚本,判断当前系统的内核主,次版本,若大于2.4则输出相应的版本信息,否则输出提示“内核版本太低,无法继续”

[www.ae.com@ ~]# vi chkversion.sh

#!/bin/bash
M=$(/usr/bin/uname -r | awk -F. '{ print $1 }')
echo "内核主版本:$M"
S=$(/usr/bin/uname -r | awk -F. '{ print $2 }')
echo "内核次版本:$S"
if [ $M -gt 2 ]
then
  echo "主版本满足条件,可以安装"
elif [ $M -eq 2 -a $S -ge 4 ]
then
  echo "可以安装"
else
  echo "版本太低,无法安装"
fi

shell脚本编程规范小案例-有趣的小例子!

4.编写一个名为chkinstall.sh的脚本,判断系统中sysstat软件包的安装情况,已经安装则提示“已安装”,并输出sysstat的版本信息;否则输出提示“未安装,尝试自动安装”,并访问光盘挂载点/media/cdrom,自动安装sysstat软件包

[www.ae.com@ ~]# vi chkinstall.sh

#!/bin/bash
#echo "$(rpm -q dhcp)"
A="$(rpm -qa sysstat)"
if [ $A -z ]
then
  echo "软件sysstat未安装 "
  /usr/bin/df -hT
  /usr/bin/yum install -y sysstat
else
  echo "软件已安装"
  echo "版本:$A"
fi

shell脚本编程规范小案例-有趣的小例子!

......

shell脚本编程规范小案例-有趣的小例子!

现在给此脚本做优化,可以实现查询任意软件包,如未安装,自动安装;若已安装,显示软件包版本;

[www.ae.com@ ~]# vi chkinstall-2.0.sh

#!/bin/bash
read -p "请输入软件包的名称:" PAG
A="$(yum provides $PAG)"
if [ $? -eq 0 ]
then
  echo "软件已安装"
  echo "版本:$A"
else
  echo "软件$PAG未安装 "
  read -p "是否安装(y/n):" OK
        if [ $OK = "y" ]
        then
           yum install $A
        else
           "您选择不安装"
        fi
fi

shell脚本编程规范小案例-有趣的小例子!

5.编写一个脚本,根据IP地址列表检查主机状态

[www.ae.com@ ~]# vi ping.sh

#!/bin/bash
for IP in 192.168.80.{182..186}
do
        ping -c1 -i0.2 -W1 $IP &> /dev/null
if [ $? -eq 0 ]
        then echo "$IP is UP!"
else    echo "$IP is down!"
fi
done

shell脚本编程规范小案例-有趣的小例子!

6.猜价格游戏

[www.ae.com@ ~]# vi pricegame.sh

#!/bin/bash
price=$( expr $RANDOM % 100 )
times=0
echo "猜价格是多少(0-100)"
while true
do
        read -p "输入猜测价格:" int
        let times++
        if [ $int -eq $price ]
        then
        echo "bingo!the price is:$price"
        echo "you guess $times times"
        exit 0
        elif [ $int -gt $price ]
        then
        echo "too high!"
        else
        echo "too low!"
        fi
done

shell脚本编程规范小案例-有趣的小例子!

7.编写一个脚本,批量添加系统用户

[www.ae.com@ ~]# vi adduser.sh      (使用while循环)

#!/bin/bash
i=1
PRE=test
while [ $i -le 5 ]
do
        useradd $PRE$i
        echo "123" | passwd --stdin $PRE$i &> /dev/null
        let i++
done
cat /etc/passwd | grep test

shell脚本编程规范小案例-有趣的小例子!

[www.ae.com@ ~]# vi adduser-2.0.sh       (使用for循环)

#!/bin/bash
for USER in test{6..10}
do
        useradd $USER
        echo "${USER}abc" | passwd --stdin $USER &> /dev/null
done

cat /etc/passwd | grep test  

shell脚本编程规范小案例-有趣的小例子!

8.编写一个sumint.sh脚本,提示用户输入一个小于100的整数,并计算从1到该数之间的所有整数的和。

[www.ae.com@ ~]# vi sumint.sh

#!/bin/bash
read -p "please enter a number: " num
while [ $num -ge 1 ] && [ $num -lt 100 ]
do
        let sum+=num
        let num--
done
echo "the sum is $sum "

shell脚本编程规范小案例-有趣的小例子!

优化版(实现显示运算过程并且正序输出):

[www.ae.com@ ~]# vi sumint-2.0.sh

#!/bin/bash
read -p "please enter a number: " num
sum=1
i=1
p=$num
while [ $num -gt 1 ] && [ $num -lt 100 ]
do
        echo -ne $i" + "
        let sum+=num
        let num--
        let i++
done
echo "$p is $sum "

shell脚本编程规范小案例-有趣的小例子!

9.编写一个untar.sh脚本,用来解压"tar.gz"或".tar.bz2"格式的压缩文件,要求用case语句,根据文件后缀来自动选择相应的解压选项

[www.ae.com@ ~]# vi untar.sh

#!/bin/bash
read -p "please input the file you want to unzip: " file
Suffix=${file##*.tar.}
case "$Suffix" in
gz)
tar -zxvf "/root/"$file -C /root/tar/
;;
bz2)
tar -jxvf "/root/"$file -C /root/tar/
;;
*)
echo "please enter the effective file!"
;;
esac

shell脚本编程规范小案例-有趣的小例子!

前提是在/root/目录下有a.tar.gz这个压缩文件和tar这个目录存在

10.编写一个脚本,用函数判断从键盘输入的数是否为整数,若不是则重新输入

[www.ae.com@ ~]# vi panduan.sh

#!/bin/bash
panduan(){
n=0
while :
do
        read  p
        expr $p + 0 &> /dev/null
        if [ $? -eq 0 ]
        then
                echo "您输入的数是$p"
                echo
                n=$p
                break
        else
                echo "您输入的$p不是整数"
                echo -ne "请输入一个整数:"
                echo
                continue
        fi
done
}

echo  "请输入一个整数:"

panduan
nu=$n

shell脚本编程规范小案例-有趣的小例子!

11.编写一个脚本,做出一个简单的两位数整数运算器

[www.ae.com@ ~]# vi yunsuanqi.sh

#!/bin/bash
echo " ----------------------------------------"
echo "|这是一个简单的两位数整数计算器,作者CY|"
echo " ----------------------------------------"
echo
panduan(){
n=0
while :
do
        read  p
        expr $p + 0 &> /dev/null
        if [ $? -eq 0 ]
        then
                echo "您输入的数是"
                echo $p
                n=$p
                break
        else
                echo "您输入的$p不是整数"
                echo "请输入一个整数:"
                continue
        fi
done

}
echo  "请输入第一个整数:"
panduan
nu=$n
echo  "请输入第二个整数:"
panduan
nu2=$n

echo  " ------------------"
echo "|     1.加法       |"
echo "|     2.减法       |"
echo "|     3.乘法       |"
echo "|     4.除法       |"
echo  " ------------------"
while :
do
read -p "请输入您想执行的算法:" me
case $me in
"1")
sum=`expr $nu + $nu2`
echo "$nu+$nu2=$sum"
break

;;
"2")
jian=`expr $nu - $nu2`
echo "$nu-$nu2=$jian"
break
;;
"3")
chen=`expr $nu \* $nu2`
echo "$nu*$nu2=$chen"
break
;;
"4")
chu=`expr $nu / $nu2`
echo "$nu/$nu2=$chu"
break
;;
*)
echo "请选择1、2、3、4"
echo "请重新选择"
esac
done

shell脚本编程规范小案例-有趣的小例子!