zoukankan      html  css  js  c++  java
  • shell的几个实际小例子

    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:",要求用户输入数值,然
    后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。

    #!/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

  • 相关阅读:
    ls命令具有一个r选项,可以递归的列出子目录中的内容。请编写一个具有同样功能的程序。
    BizTalk Server 2006 正式发布了,有120天试用版可以下载 无为而为
    IT人看《国富论》系列:第一篇之第四章:论货币的起源及其效用。UML是软件行业的货币 无为而为
    使用XPathNavigator和XPathExpression求出XPath的值,[源代码] 无为而为
    为XPath自定义函数(因为XPath1.0的函数非常有限)[附源代码下载] 无为而为
    IT人看《国富论》系列:第一篇之第二章:论分工的原由。分工其实是人类利己倾向的结果 无为而为
    非常令人沮丧的是,SQL 2005 发布的 Web EndPoint不支持匿名访问 无为而为
    Team Foundation Server Workgroup Edition 5 用户限制到底是如何限制的呢? 无为而为
    微软发布新的MSN ToolBar V2.5,包含桌面搜索,Outlook搜索,支持IE的选项卡浏览模式 无为而为
    IT人看《国富论》系列:第一篇之第三章:论分工受市场范围的限制。外国人都觊觎的中国市场到底大还是不大? 无为而为
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205718.html
Copyright © 2011-2022 走看看