shell脚本的案例解读

shell脚本的案例解读

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

方法一:for

#!/bin/bash
#
sum=0
for ((i=1;i<=100;i++))
do
    sum=$[$i+$sum]
done
  echo "0-100的和为:" $sum

二方法:while

#!/bin/bash
#
i=0
sum=0
while [ $i -le 100 ]
do
  sum=$[$sum+$i]
  let i++
done
  echo "1-100的和为:$sum"

三方法:while

#!/bin/bash
#
i=0
sum=0
while [ $i -le 100 ]
do
  sum=$[$sum+$i]
  let i++
done
  echo "1-100的和为:$sum"

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

方法一:for

#!/bin/bash
#
sum=0
read -p "请输入一个小于100的整数:" b
if [ $b -gt 0 -a $b -le 100 ];then
  for ((i=1;i<=100;i++))
  do
    if [ $i -le $b ];then
    sum=$[$sum+$i]
    else
    break
    fi

  done

echo "1到$b之间所有整数的和为:$sum"
fi

方法二:while

#!/bin/bash
#
i=0
sum=0
read -p "请输入一个小于100的整数:" b
if [ $b -gt 0 -a $b -le 100 ];then
  while [ $i -le $b ]
  do
    sum=$[$sum+$i]
    let i++
  done
    echo "1到$b之间所有整数的和为:$sum"
else
  echo "请输入0-100区间的整数"
fi

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

方法一:for

#!/bin/bash
#
sum1=0
sum2=0
for ((i=0;i<=100;i++))
do
  a=`echo $[$i%2]`
  if [ $a -eq 1 ] ;then
    sum1=$[$sum1+$i]
  else
    sum2=$[$sum2+$i]
  fi
done
  echo "0-100之间的偶数和为:$sum2"
  echo "0-100之间的奇数和为:$sum1"

方法二:while

#!/bin/bash
#
sum1=0
sum2=0
i=0
while [ $i -le 100 ]
do
  a=`echo $[$i%2]`
  if [ $a -eq 0 ]
  then
    sum2=$[$sum2+$i]
    let i++
  else
    sum1=$[$sum1+$i]
    let i++
  fi
done
  echo "0-100之间的偶数和为:$sum2"
  echo "0-100之间的奇数和为:$sum1"

四、淘宝选购商品脚本

每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。

#!/bin/bash
#
sum=0

for ((i=1; ;i++))
do
sum=$sum
  echo "可购买的商品为衣服(500元),裤子(400元),鞋子(350元),帽子(150元),袜子(50元)"
  echo "-------------------------------请输入相应的编号购买产品-------------------------------"
  echo "-----------1:衣服-------2:裤子-------3:鞋子-------4:帽子-------5:袜子------------"
  read -p "相应编号:" goods

  case $goods in
  1)
    echo    "---------------------------------------------------"
    read -p "请确定是否购买,按“1”确定购买,不想购买请按任意数字" a
    if [ $a -eq 1 ];then
    sum=$[$sum+500]
      echo    "-------------------------------------------------"
      read -p "感谢购买此商品,按任意数字键进入下一家店;按0退出" aa
        if [ "$aa" -eq 0 ];then
          echo "你本次购买了$i 件商品,一共$sum 元。"
          break
        fi
    fi
  ;;
  2)

    echo    "--------------------------------------------------------"
    read -p "请确定是否购买,按“1”确定购买,不想购买请按任意数字" a
    if [ $a -eq 1 ];then
    sum=$[$sum+400]
      echo    "------------------------------------------------------"
      read -p "感谢购买此商品,按任意数字键进入下一家店;按0退出" aa
        if [ "$aa" -eq 0 ];then
          echo "你本次购买了$i 件商品,一共$sum 元。"
          break
        fi
    fi
  ;;
  3)

    echo    "--------------------------------------------------------"
    read -p "请确定是否购买,按“1”确定购买,不想购买请按任意数字" a
    if [ $a -eq 1 ];then
    sum=$[$sum+350]
      echo    "------------------------------------------------------"
      read -p "感谢购买此商品,按任意数字键进入下一家店;按0退出" aa
        if [ "$aa" -eq 0 ];then
          echo "你本次购买了$i 件商品,一共$sum 元。"
          break
        fi
    fi
  ;;
  4)

    echo    "--------------------------------------------------------"
    read -p "请确定是否购买,按“1”确定购买,不想购买请按任意数字" a
    if [ $a -eq 1 ];then
    sum=$[$sum+150]
      echo    "------------------------------------------------------"
      read -p "感谢购买此商品,按任意数字键进入下一家店;按0退出" aa
        if [ "$aa" -eq 0 ];then
          echo "你本次购买了$i 件商品,一共$sum 元。"
          break
        fi
    fi
  ;;
  5)

    echo    "--------------------------------------------------------"
    read -p "请确定是否购买,按“1”确定购买,不想购买请按任意数字" a
    if [ $a -eq 1 ];then
    sum=$[$sum+50]
      echo    "------------------------------------------------------"
      read -p "感谢购买此商品,按任意数字键进入下一家店;按0退出" aa
        if [ "$aa" -eq 0 ];then
          echo "你本次购买了$i 件商品,一共$sum 元。"
          break
        fi
    fi
  ;;
  *)
    echo "请输入正确的商品编号"
  esac
done                                                          

五菱形的输出

#!/bin/bash
#上面的三角形
read -p "请输入一个奇数来建立菱形:" z
y=$[z/2]
x=$[y+1]
for ((a=1;a<=x;a++))   #行数
do
  for ((b=y; b>=a;b--))  #列数
  do
    echo -n " "
  done
  i=$[($a*2)-1]
  for ((c=1;c<=i;c++))   #列数
  do
    echo -n "*"
  done
  echo " "
done
#下面的三角形
for ((a=1; a<=y; a++))
do
  for ((b=1; b<=a; b++))
  do
    echo -n " "
  done
  i=$[z-2*$a]
  for ((c=1; c<=i; c++))
  do
    echo -n "*"
  done

  echo " "
done

上一篇:循环队列Queue


下一篇:文件io之内核接口