Shell脚本展示
学好Shell脚本的重中之重就是先打好基础,这里就展示一些最基本脚本代码。
1.99乘法口诀表
#!/bin/bash
for ((n=1;n<=9;n++))
do
for ((i=1;i<=$n;i++))
do
echo -n "$n x $i = `expr $n \* $i` "
if [ $i -eq $n ];then
echo -e '\n'
fi
done
done
2.批量添加或删除用户
#!/bin/bash
i=1
del=1
[while true
do
read -p "是否添加用户或者删除用户?(y/n)退出按任意键。" xz
case $xz in
y)
while [ $i -le 20 ]
do
useradd stu$i
echo "123456" | passwd --stdin stu$i &> /dev/nell
let i++
echo "用户添加成功!"
done
i=1
;;
n)
while [ $del -le 20 ]
do
userdel -r stu$del &> /dev/nell
let del++
echo "用户删除成功!"
done
del=1
;;
*)
echo "退出程序。"
break
esac
done
- 1~50的累加
#!/bin/bash
i=1
sum=0
until [ $i -eq 51 ]
do
sum=`expr $i + $sum`
let i++
done
echo $sum
4.判断一个五位数是否为回文数字
#!/bin/bash
echo "这是一个判断一个数是否为回文数字的脚本。"
read -p "是否开始?(y/n)" xz
while true
do
if [ $xz = "y" ];then
read -p "请输入一个五位数" a
#万位
b=`expr $a / 10000`
#千位
c=`expr $a % 10000 / 1000`
#百位
d=`expr $a % 10000 % 1000 / 100`
#十位
e=`expr $a % 10000 % 1000 % 100 / 10`
#个位
f=`expr $a % 10000 % 1000 % 100 % 10`
[ $b -eq $f ]&&[ $c -eq $e ]&&echo "这是一个回文数字。"||echo "这不是回文数字。"
read -p "还要继续吗?(y/n)" jx
if [ $jx = "y" ];then
echo "请再次输入。"
continue
else
echo "退出"
break
fi
else
echo "退出"
break
fi
done
5.输入任意一组数字找出其中的最大值
#!/bin/bash
bbb=($*)
max=${bbb[0]}
for ((i=1;i<=$#-1;i++))
do
if [ $max -lt ${bbb[$i]} ];then
max=${bbb[$i]}
fi
done
echo "你一共输入了$#个数字,其中最大的数字为:$max。"
- 输入一组数字按照降序排列
#!bin/bash
a=0
read -p "请输入一组数字:" n
aaa=($n)
for ((i=0;i<=${#aaa[*]}-1;i++))
do
for ((g=0;g<=${#aaa[*]}-2;g++))
do
if [ ${aaa[$g]} -lt ${aaa[$g+1]} ];then
a=${aaa[$g]}
aaa[g]=${aaa[$g+1]}
aaa[g+1]=$a
fi
done
done
echo ${aaa[*]}
7.在商场购物买东西
#!/bin/bash
swjg=0
rypjg=0
yfjg=0
while true
do
read -p "有以下三种商品类别:1.食物 2.日用品 3.衣服 4.结账,请选择商品类别序号:" xz
if [ $xz -eq 1 ];then
while true
do
read -p "请选择你想要的食物:1.白菜100元 2.青菜50元 3.韭菜200元 4.退出选择:" sw
case $sw in
1)
let swjg+=100
echo "买了一个白菜。"
echo -e "购买食物已经花了$swjg元。\n"
;;
2)
let swjg+=50
echo "买了一个青菜。"
echo -e "购买食物已经花了$swjg元。\n"
;;
3)
let swjg+=200
echo "买了一个韭菜。"
echo -e "购买食物已经花了$swjg元。\n"
;;
4)
echo "退出购买食物。"
break
;;
esac
done
elif [ $xz -eq 2 ];then
while true
do
read -p "请选择你想要的日用品:1.洗发水50元 2.洗衣粉74元 3.肥皂25元 4.退出选择:" ryp
case $ryp in
1)
let rypjg+=50
echo "买了一个洗发水。"
echo -e "购买日用品已经花了$rypjg元。\n"
;;
2)
let rypjg+=74
echo "买了一个洗衣粉。"
echo -e "购买日用品已经花了$rypjg元。\n"
;;
3)
let rypjg+=25
echo "买了一个肥皂。"
echo -e "购买日用品已经花了$rypjg元。\n"
;;
4)
echo "退出购买食物。"
break
;;
esac
done
elif [ $xz -eq 3 ];then
while true
do
read -p "请选择你想买的衣服,1.衬衫500元 2.羽绒服300元 3.女装1000元 4.退出购买:" yf
case $yf in
1)
let yfjg+=500
echo "买了一件衬衫。"
echo -e "购买衣服已经花了$yfjg元。\n"
;;
2)
let yfjg+=300
echo "买了一件羽绒服。"
echo -e "购买衣服已经花了$yfjg元。\n"
;;
3)
let yfjg+=1000
echo "买了一件女装。"
echo -e "购买衣服已经花了$yfjg元。\n"
;;
4)
echo "退出购买衣服。"
break
;;
esac
done
elif [ $xz -eq 4 ];then
[ $swjg -ge 500 ] &&swjg=`expr $swjg \* 8 / 10`&&echo "购买食物大了8折。"
[ $rypjg -ge 300 ] &&rypjg=`expr $rypjg \* 9 / 10`&&echo "购买日用品打了9折。"
[ $yfjg -ge 1000 ] &&yfjg=`expr $yfjg \* 7 / 10`&&echo "购买衣服打了7折。"
echo "购买食物花了$swjg元,购买日用品花了$rypjg元,购买衣服花了$yfjg元,一共花了`expr $swjg + $rypjg + $yfjg`元。"
break
fi
done