1、输入两个整数计算这两个整数的相加,相减,相乘,相除,求余的结果**
#!/bin/sh
read -p "请输入一个数字:" s
if [[ ! $s =~ ^[0-9]+$ ]];then
read -p "error 请重新输入:"
fi
read -p "请输入一个数字:" a
if [[ ! $s =~ ^[0-9]+$ ]];then
read -p "error 请重新输入:"
fi
echo "$s+$a=$(($a+$s))"
echo "$s-$a=$(($s-$a))"
echo "$s/$a=$(($s/$a))"
echo "$s*$a=$(($s*$a))"
2、打印下面这句话中字母数小于5的单词 I am liangzeyu teacher I am 18
for n in I am oldboy teacher I am 30
do
if [ ${#n} -lt 3 ]
then
echo $n
fi
done
3、写一个shell脚本来看看你使用最多的命令是哪些,列出你最常用的命令top10
history |awk '{print $2}'|sort -n|uniq -c|sort -nr|head
4、编写一个脚本,计算100以内所有能被3整除数字的和
sum=0
for n in `seq 1 100`
do
s=`awk "BEGIN{print $n/3}"`
if [[ ${#s} -eq 1 ]]||[[ ${#s} -eq 2 ]];then
sum=`expr $sum + $n`
fi
done
echo $sum
5、写一个脚本,实现判断10.0.0.0/24网络里,当前在线用户的IP有哪些
#!/bin/sh
ip=10.0.0.
for i in `seq 1 254`
do
IP=${ip}$i
ping -c 2 $IP >/dev/null
if [ $? -eq 0 ];then
echo $IP
fi
done
6、按单词出现频率降序排序
the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation
word(){
echo $str|sed 's#[^a-zA-Z]#\n#g'|grep -v "^$"|sort|uniq -c|sort -rn -k1
}
#no2按字母出现的频率降序排序
string(){
echo $str|grep -o "."|egrep -v "[^a-zA-Z]"|sort|uniq -c|sort -rn -k1
}
menu(){
cat <<END
输入数字1:按单词出现的频率降序排序
输入数字2:按字母出现的频率降序排序
END
read -p "Pls you choose num:" num
}
menu
usage(){
echo "USAGE:You muset choose 1 or 2"
exit 1
}
case "$num" in
1)
word
;;
2)
string
;;
*)
usage
esac
cat 1.txt |xargs -n1|sort |uniq -c|sort -nr
7、猜数字-写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个0-100的数字)一样时,直接退出,否则让用户一直输入,并且提示用户的数字比语塞数字大或者小
#!/bin/bash
sum=`echo $((RANDOM%100))`
i=1
while true
read -p "请输入一个幸运数字:" pp
do
if [ $sum -gt $pp ];then
echo "小老弟你输入的有点小鸭"
elif [ $sum -lt $pp ];then
echo "小老弟你输入的有点大鸭"
else
echo "恭喜你获得100万元人民币"
break
Fi
Let i++
done
echo "您共用了$i次机会"
8、查看磁盘/当前使用状态,如果使用率超过80%则把结果输出到/var/log/df.err
#!/bin/bash
a=`df -h|awk 'NR==2{print $5}'`
if [ ${a%\%} -gt 80 ];then
echo "磁盘超过百分之80,$a";echo $a >/var/log/disk.err
else
echo "磁盘正常"
fi
9、批量创建用户- **脚本批量创建10个用户,密码统一为123,需要对用户输入是否为数字和输入的名字是否为空做判断
#!/bin/sh
q=1
read -p "请输入创建的前缀:" sum
[ -z $sum ]&&echo '请输入正确的前缀'
read -p "请输入创建几个用户:" sun
if [[ ! $sun =~ ^[a-Z]+$ ]];then
echo "请输入正确的数字"
fi
read -p "请输入设置的密码:" m
for i in `seq $q $sun`
do
useradd ${sum}$i
if [ $? -eq 0];then
echo "创建用户成功"
fi
echo $m |passwd --stdin ${sum}$i
if [ $? -eq 0 ];then
echo "设置密码正确"
fi
done
10、抓阄
好消息,学生外出企业项目实践机会(第6次)来了(本月中旬),但是,名额有限,队员限3人(班长带队)。因此需要挑选学生,因此需要一个抓阄的程序:
要求:
1、 执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。
2、 第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入。
#!/bin/sh
[ -f /tmp/2.txt ] || touch /tmp/2.txt
#echo -e "101\tbanzhang" >/tmp/2.txt
while :
do
Ran=`echo $((RANDOM%10+1))`
#if [ `awk '{print $1}' /tmp/2.txt |sort |uniq -c|sort -nr|awk 'NR==1{print $1}'` -eq 1 ];then
if [ `grep -w $Ran /tmp/2.txt|wc -l` -eq 1 ];then
continue
fi
read -p "请输入组员的信息:" num
if [[ $num =~ [0-9] ]];then
echo "请输入英文全拼"
continue
fi
echo -e "${Ran}\t${num}" >>/tmp/2.txt
echo -e "${Ran}\t${num}"
if [ `cat /tmp/2.txt|wc -l` -ge 9 ];then
echo "=============================="
echo "以下几人可以去happy"
sort -k1nr /tmp/2.txt |sed -n 1,3p
break
fi
done
11、打印一个菜单如下,然后用循环加case语句输出用户输入菜单选项的结果
h 显示命令帮助
f 显示登陆信息
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
#!/bin/sh
caidan(){
cat<<EOF
h 显示命令帮助
f 显示登陆信息
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
}
caidan
while true
do
read -p "请输入你要查看的系统信息:[h|f|d|m|u|q]" s
case $s in
h)
clear
caidan
;;
f)
w
;;
d)
df -h
;;
m)
free -m
;;
u)
uptime
;;
q)
exit 1
;;
*)
read -p "请输入你要查看的系统信息:[h|f|d|m|u|q]" s
esac
done
12、生成0-100之间的随机数,并相加,直到大于1000,输出相加的结果
#!/bin/sh
we=0
while true
do
i=`echo $((RANDOM%100))`
we=$(($we+$i))
if [ $we -gt 1000 ];then
echo $we
exit
fi
done
有问题请加博主微信进行沟通!
全部评论