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
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%"
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
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
......
现在给此脚本做优化,可以实现查询任意软件包,如未安装,自动安装;若已安装,显示软件包版本;
[www.ae.com@ ~]# vi chkinstall-2.0.sh
#!/bin/bash
read -p "请输入软件包的名称:" PAG
A="$(rpm -qa $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
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
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
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
[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
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 "
优化版(实现显示运算过程并且正序输出):
[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 "
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
前提是在/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
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