Welcome to my testing room.

shell 脚本实例

上一篇 / 下一篇  2008-12-30 14:26:05 / 个人分类:基本概念

1. 写一个脚本,利用循环计算10的阶乘

#!/bin/sh

d]L%H{%u]zr0

 51Testing软件测试网:m%YM)h |u

factorial=1

2fec3wb.K0

 

/e0W*xO,B0

for a in `seq 1 10`
G/e [ {e"x~b [0
51Testing软件测试网H&wT8v{V'Fc

do51Testing软件测试网5i(OL5m;z+C rHcD

       factorial=`expr $factorial \* $a`

{ Q#H1_#~D g0

done

Z'h3O%c\O d~/g,Q(y0

 51Testing软件测试网mr&cF_Hb*w

echo "10! = $factorial"51Testing软件测试网 |Oj9J(xc


4R*`DK)Ap051Testing软件测试网n2NH`T&UR

注:上面有一行,for a in `seq 1 10`,其中seq 1 10 , 即列出现1到10之间所有的数字,这一行也可改为:for a in "1 2 3 4 5 6 7 8 9 10"
q9dR+`$}(j0
51Testing软件测试网,y sx#IC2?8Pv4gc6pW

2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然51Testing软件测试网&F5Q9Fj-u7V.y
后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。

#!/bin/sh

4H'[ ZPA1{0

 51Testing软件测试网?-y)G hG!p;Q@S

unset var

]eAA7i4q o:sD8~0

 

7O|9lJp#G]u0

while [  "$var" != "end" ]

A0?HVK9Q&Re0

do

0As#R/q#Zj0

     echo -n "please input a number: "51Testing软件测试网LPU0DJ4X C%a K

     read var

e*^/fA| ["PL*r"I0

     if [ "$var" = "end" ]51Testing软件测试网&s%rY4_7yV4V4?8V2W

     then51Testing软件测试网)M%I k~4{T&K4AM!Bw

         break

#i Y'Mk!H0

     fi

*I4Y1q x[wUfPw@0

     echo "var is $var"

8BiRe\+w0

done51Testing软件测试网wO |,z|H^%c2?c*r

 51Testing软件测试网k'fdWP I-N-F pe

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

3p(w noT3NI7A0

#!/bin/sh51Testing软件测试网wa |$a8o @g

 51Testing软件测试网0pkt8TmLj]0_.?%G

sum=0

b#hW[ p Z0

for a in `seq 1 100`51Testing软件测试网5Ws|s9|#F7x:U

do

/B'b:N!{FZ0

     if [ `expr $a % 3` -ne 0 ]

X n}6d`0

     then

$VH5C7cx-f"A2A0

          continue

'C R9U;C5Go0

     fi51Testing软件测试网_;Z'@*O5j-H

     echo $a

AB#o"[I S#^0

     sum=`expr $sum + $a`

?q$Zw+L;m0

done51Testing软件测试网 E&i"ep4~ Lp

 

}/@1gHfu0

echo "sum = $sum"51Testing软件测试网^9MSGC%@

 51Testing软件测试网no&?Q v/o*I V}

4.一个函数,利用shift计算所有参数乘积,假设参数均为整数
gUH0lX-O2v4{d2z0

.\ x$K?%t'SVH0

#! /bin/sh51Testing软件测试网B.k iv+^\9| ?K

 51Testing软件测试网jb8z]"} wL'Z

result=1

ZGH.[ i_L6?!p0

while [ $# -gt 0 ]51Testing软件测试网|kb6B _ sNW#M,Q!y

do51Testing软件测试网;LA7@]ND o)_

     result=`expr $result \* $1`

*D d-V;J Pr-T,Pj_"a0

     shift51Testing软件测试网%` LU:C"^ S`'L

done

| u;FQ1CPo$XT0

echo $result

B\qwJ+wA0

 

~'uv$h%B9C0C0

 51Testing软件测试网2e#S#`['H*e

5.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。

#!/bin/sh51Testing软件测试网yKT}4@%b8PBr-j

 

F`&p+Oo R$f0

case ${1##*.tar.} in 51Testing软件测试网T+|#KT'X2V7X4enV

     bz2)51Testing软件测试网FK`-UA g#z

         tar jxvf $1

Ql6y.R^,Mg0

         ;;

p9D1y"H;_0

     gz)

3Ru?9U*O;NS%[_0

         tar zxvf $151Testing软件测试网~$`S)\b)uN!Ci

         ;;51Testing软件测试网9jW u`5OHV`|

     *)

.bjN$\0y^$@U0

         echo "wrong file type"51Testing软件测试网:D.uf Zu

esac

G&d$X!\`fBD O9_W0

 51Testing软件测试网9{,EPUKAv CM

6.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如
rDMv0}_N2p0文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,51Testing软件测试网L J h`$M,m-vp5l
包的信息等。然后询问是否继续查询,是则循环刚才的过
程,否则退出。

#!/bin/sh51Testing软件测试网,^~(LV w$AlN

RPM=/bin/rpm51Testing软件测试网w-]9D Cs2em6S

option="-q"

:W.}_ H_G?5W0

 

sT_5E0gE-i;K:f0

while true

%h7DQhp0

do

[!D(j,W)C1Fkd0

       echo "what to query?"51Testing软件测试网l)y6E b9f9|4zb

       select var in  "All" "file" "package name" 51Testing软件测试网PR'y5S?/c3|'t

       do51Testing软件测试网},\5_f:D?wg"l

              case $var in51Testing软件测试网r.nv1\+Biw:a J({

              All)

+vS8cA.rB;j0

                     option=$option"a"51Testing软件测试网#x)sD%sg9o;b of'x

                     break51Testing软件测试网+G.X%|8Y L5z1[

                     ;;51Testing软件测试网q,?"g8Un;]n

              file)51Testing软件测试网tpe hy"{)F*}

                     echo -n "please input file name: "51Testing软件测试网+gaYW.v V

                     option=$option"f"

po5p-D9P#loem5v0

                     read argument51Testing软件测试网rQDk.cEq

                     break51Testing软件测试网#f Iwn/d+a:U

                     ;;

PpI/O%yp3W:Z;T0

              package\ name)51Testing软件测试网c-K1OqZ!D2h'I yIh

                     echo -n "please input package name: "51Testing软件测试网de d4lG)r;|

                     read argument51Testing软件测试网+C8Wi"Z'vh

                     break51Testing软件测试网!o6Q$BA)J2V%A@

                     ;;

tS/tE8~,Z0

              *)51Testing软件测试网 I&_RW~0y&B

                     echo "please choose between 1-3"

9x[)Fe,sZgg3ZE0

                     ;;

6JL\#{*D8i0

              esac51Testing软件测试网]!\P1Uc{@7j1YZ;XH

       done

a;R0f0Q{;l{0

 

I+r} lRs&rP0

       echo "what do you want to know?"51Testing软件测试网6~|jSgu0s

       select var in "location" "info" "package name"51Testing软件测试网-g H-d:t0Nku}L

       do

c-`a(a N7v:\0

              case $var in

2z%pJ c)L8mf0

              location)51Testing软件测试网+GZd7E'Px5lpT

                     option=$option"l"51Testing软件测试网Ozt+r:@o:|v7ZfE

                     break

;H!O~mw m0

                     ;;51Testing软件测试网m9}8Pu+e9d3ko

              info)

{_'S `c7p0

                     option=$option"i"

I)t2Ry7do*]:y}0

                     break51Testing软件测试网H-?7Qq?R:~H

                     ;;

$x)jS-ns)^m0

              package\ name)

e)VD;KDK o0

                     break

Q)yc5?\(_0

                     ;;51Testing软件测试网ilF8i{

              *)51Testing软件测试网w8F$P,O;A*fD

                     echo "please choose between 1-3"51Testing软件测试网tE)B?K \ r @%w*{

                     ;;

o!m3c ^ys b9U`0

              esac

Ucq!x8U9Wh q0

       done

X*Mo/V8KP6[!cw0

 51Testing软件测试网B*S&d dyDY

       ${RPM}  $option $argument

c1wh"xuH#p9sP0

 51Testing软件测试网;Z S ?DY

       echo "continue? [yes/no]"

'T%j6h7}}o^V0

       read answer

!W/L L6x+Q0

 51Testing软件测试网`"@&\ l{

       if [ answer = "no" ]

6E~ U~:TQ_6Z0

       then51Testing软件测试网:X;Y`4W2P)R'}

              break51Testing软件测试网o6H]rz

       fi

1p |:INT8t|.|M0

done

5amP3\7n9B Xo'? r0

TAG: 基本概念

 

评分:0

我来说两句

日历

« 2024-04-28  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 31149
  • 日志数: 54
  • 图片数: 1
  • 建立时间: 2008-10-20
  • 更新时间: 2010-01-13

RSS订阅

Open Toolbar