Linux shell 脚本实例一

转自:http://sucre.iteye.com/blog/625918
1. 写一个脚本,利用循环计算10的阶乘
#!/bin/sh
 
factorial=1
 
for a in `seq 1 10`
do
        factorial=`expr $factorial \* $a`
done
 
echo "10! = $factorial"


注:上面有一行,for a in `seq 1 10`,其中seq 1 10 , 即列出现1到10之间所有的数字,这一行也可改为:for a in "1 2 3 4 5 6 7 8 9 10"

2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然
后打印出该数值,然后再次要求用户输入数值。直到用户输入
#!/bin/sh
 
unset var
 
while [   "$var" != "end" ]
do
      echo -n "please input a number: "
      read var
      if [ "$var" = "end" ]
      then
          break
      fi
      echo "var is $var"
done


3. 写一个脚本,利用循环和continue关键字,计算100以内能被3整除的数之和

#!/bin/sh
 
sum=0
for a in `seq 1 100`
do
      if [ `expr $a % 3` -ne 0 ]
      then
            continue
      fi
      echo $a
      sum=`expr $sum + $a`
done
 
echo "sum = $sum"


4.一个函数,利用shift计算所有参数乘积,假设参数均为整数( 特殊变量$# 表示包含参数的个数)

#! /bin/sh
 
result=1
while [ $# -gt 0 ]
do
      result=`expr $result \* $1`
      shift
done
echo $result
 


5.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。
#!/bin/sh
 
case ${1##*.tar.} in
      bz2)
          tar jxvf $1
          ;;
      gz)
          tar zxvf $1
          ;;
      *)
          echo "wrong file type"
esac


6.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如

文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,

包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。
#!/bin/sh
RPM=/bin/rpm
option="-q"
 
while true
do
        echo "what to query?"
        select var in   "All" "file" "package name"
        do
               case $var in
               All)
                       option=$option"a"
                       break
                      ;;
               file)
                       echo -n "please input file name: "
                       option=$option"f"
                       read argument
                       break
                      ;;
                package\ name)
                       echo -n "please input package name: "
                       read argument
                       break
                      ;;
               *)
                       echo "please choose between 1-3"
                      ;;
               esac
        done
 
        echo "what do you want to know?"
        select var in "location" "info" "package name"
        do
               case $var in
                location)
                       option=$option"l"
                       break
                      ;;
               info)
                       option=$option"i"
                       break
                      ;;
                package\ name)
                       break
                      ;;
               *)
                       echo "please choose between 1-3"
                      ;;
               esac
        done
 
        ${RPM}   $option $argument
 
        echo "continue? [yes/no]"
        read answer
 
        if [ answer = "no" ]
        then
               break
        fi
done


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值