shell实验案例

计算从1到100所有整数的和


#!/bin/bash
#计算从1到100所有整数的和

sum=0
for ((a=1; a<=100; a++))
do
     sum=$[sum + $a]


done
echo $sum

   提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
    

#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

read -p "请输入一个小于100的整数:" num
sum=0
for ((a=1; a<=num; a++))
do
sum=$[sum + a]
done

echo "$sum"
 

求从1到100所有整数的偶数和、奇数和

#!/bin/bash
#求从1到100所有整数的偶数和、奇数和

jinum=0
ounum=0

for ((i=1; i<=100; i++))
do
    a=$[i % 2]
    if [ $a -eq 1 ];then
   jinum=$((jinum + i))
  else
ounum=$((ounum + i))

    fi
done

echo "1到100所有整数的偶数和 :$ounum"
echo "1到100所有整数的奇数和 :$jinum"

用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息连续输错3次则报警

#!/bin/bash
#.用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息连续输错3次则报

for ((a=1; a<=3; a++))
do
read -p "请输入密码:" num

     if [ $num -eq 123456 ];then
  echo "密码正确"
   exit
else
  echo "密码错误请重试"
  fi

done
echo "报警!!!"
 

编写能够自动生成一个6位随机密码的脚本
 


#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本
mima() {
str="123456789"

for ((i=1; i<=$wei; i++))
do
    num=$[RANDOM % ${#str}]
    passd=${str:num:1}
    password+=$passd

done
}

read -p "请输入位数来生成位数的随机密码:"  wei

mima $1
echo "$wei位的随机密码为$password"
 

求裴波拉切数:1,1,2,3,5,8,13,21,34,55,89...数列从第3项开始每一项等于前两项之和,打印前10个元素


#!/bin/bash
#求裴波拉切数:1,1,2,3,5,8,13,21,34,55,89...数列从第3项开始每一项等于前两项之和,打印前10个元素


first=1
second=1

for ((i=1; i<=10; i++))
do
   echo $first
  c=$[first + second]
   first=$second
   second=$c

done
 

使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数
 

#!/bin/bash
#使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数

read -p "请输入一个0-255之间的数:" num

for ((i=1; i<=8; i++))
do
    yushu=$[num % 2]
    num=$[num / 2]
    result=$yushu$result

done
echo $result
 

将一个200行的文件分割成多个50行的文件

#!/bin/bash
#将一个200行的文件分割成多个50行的文件


filepath=/root/day10/test.txt


a=0
i=1
IFS_OLD=$IFS
IFS=$'\n'

for line in $(cat $filepath)
do
   let a++

   c=$[a % 50]
   if [ $c -eq 0 ];then
   echo $line >> /root/day10/test${i}.txt
   let i++
   else
    echo $line >> /root/day10/test${i}.txt
   fi
done

IFS=$IFS_OLD

将一个点分十进制格式的IP地址转换成点分二进制格式


#!/bin/bash
#将一个点分十进制格式的IP地址转换成点分二进制格式
IP="192.168.80.30"
n=0

for ((i=1; i<=4; i++))
do
    num=${IP%%.*}
    IP=${IP#*.}
    result=''
   for a in {1..8}
   do
     yushu=$[num % 2]
     num=$[num / 2]
     result=$yushu$result
    done
     let n++
    if [ $n -lt 4 ];then
  echo -n ${result}.
  else
  echo $result
 fi
 

写个逛淘宝选购商品脚本

每家商店有五种商品选购

(衣服500元,裤子400元,鞋子300元,帽子200元,袜子50元),
每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话
购物车结管总额

#!/bin/bash
#写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,
#裤子400元,鞋子300元,帽子200元,袜子50元),
#每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话
#购物车结管总额

n=1
sum=0

while true
do
   echo "欢迎来到${n}第家店"
   read -p "是否进店?(yes/no)" doing
   until [ "$doing" == "no" ]
   do
     echo -e "欢迎光临!\n1:衣服500元 \n2:裤子400元 \n3:鞋子300元 \n4:帽子200元 \n5:袜子50元 \n6:放弃购买"
     read -p "请选择需要购买的商品序号:" num
     case $num in
     1)
       echo "衣服购买成功"
       let sum+=500
       ;;
     2)
       echo "裤子购买成功"
       let sum+=400
       ;;
     3)
       echo "鞋子购买成功"
       let sum+=300
       ;;
     4)
       echo "帽子购买成功"
       let sum+=200
       ;;
     5)
       echo "袜子购买成功"
       let sum+=50
       ;;
     6)
       echo "放弃购买"
       ;;
     *)
       echo "输入错误"
      esac
       read -p "是否继续在这家购物?(yes/no)" doing
     done

     read -p "是否继续逛下一家(yes/no)" going
     if [ "$going" == "yes" ];then
       let n++
     else
         break
     fi
done

echo -e " 一共逛了{$n}家店,\n合计消费为${sum}元" 
 

通过脚本输出环境变量PATH所包含的所有目录以及其中子目录和所有不可执行文件

length=$(echo $PATH | awk -F: '{print NF}')
path=$PATH

for ((i=1; i<=length; i++))
do
   folder=${path%%:*}
   path=${path#*:}

   find $folder -type d
   files=$(find $folder -type f)

   for j in $files
   do
        if [ ! -x $j ];then
        echo "$j 为不可执行文件"
        fi
     done
done
 

请输出数值来决定菱形的大小

lingxing () {
num=$1

for ((a=1; a<=num; a++))
do
  for ((i=num; i>a; i--))
  do
  echo -n " "
   done
   c=$[(a*2)-1]
   for ((b=1; b<=c; b++))
  do
  echo -n "*"
  done
 echo ""
done

for ((a=num-1; a>=1; a--))
do
   for ((i=num-1; i>=a; i--))
    do
echo -n " "
done

c=$[(a*2)-1]
for ((b=1; b<=c; b++))
do
echo -n "*"
done
echo ""


done
}
#######main########

read -p "请输入菱形的大小:" NUM
 

  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值