shell脚本程序练习

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

#!/bin/sh

#path="/home/lyasrv/"

 

#package="MMS_Component_R002C02L00007_SERVER_ATAE_RUN_20120614.tar.gz"

echo"-------------begin tar------------"

echo-n "please input the path and file : "

readfilepath

tar-zxvf $filepath

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

#!/bin/sh

echo"计算10的阶层的值"

sum=1

i=1

 

while[ $i -le 10  ]

do

 

sum=`expr$i \* $sum`

i=$(($i+ 1))

 

done

echo"10的阶层是:$sum"

3.写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。

#!/bin/sh

echo"输入显示,知道为END"

a=""

whiletrue

do

echo-n "input the value : "

reada

echo"你输入的内容为:$a"

if [$a = "end" ]

then

break

fi

done

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

#!/bin/sh

echo-n "input the first number :"

readm

echo-n "input the second number :"

readn

num1=$m

num2=$n

r=`expr$m % $n`

 

while[ $r -ne 0 ]

do

m=$n

n=$r

r=`expr$m % $n`

done

echo"最大公约数是:$n"

min=`expr$num1 \* $num2 / $n`

echo"最小公倍数是:$min"

 

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

#!/bin/sh

echo"对3的倍数相加"

i=1

sum=0

while[ $i -le 100 ]

do

if [`expr $i % 3` = 0 ]

then

sum=`expr$i + $sum`

fi

i=$(($i + 1 ))

done

echo$sum

6. 每日凌晨 2:01 系统自动将某一目录下,如:"/opt/msgbox/logs"的所有log文件全部打了XXXX_YYYYMMDD.tar.gz包,存放到另一目录下,如:"/opt/msgboxbackup"。

#!/bin/sh

echo-n "input the first number :"

readm

echo-n "input the second number :"

readn

num1=$m

num2=$n

r=`expr$m % $n`

 

while[ $r -ne 0 ]

do

m=$n

n=$r

r=`expr$m % $n`

done

echo"最大公约数是:$n"

min=`expr$num1 \* $num2 / $n`

echo"最小公倍数是:$min"

 

7. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。  

#!/bin/sh

echo"打印水仙花数"

fori in 1 2 3 4 5 6 7 8 9

do

forj in 0 1 2 3 4 5 6 7 8 9

do

fork in 0 1 2 3 4 5 6 7 8 9

do

firstnum=`expr$i \* 100 + $j \* 10 + $k`

secondnum=`expr$i \* $i \* $i + $j \* $j \* $j + $k \* $k \* $k`

if [$firstnum = $secondnum ]

then

echo$firstnum

fi

done

done

done

8.输入两个正整数m和n,求其最大公约数和最小公倍数。

#!/bin/sh

echo-n "input the first number :"

readm

echo-n "input the second number :"

readn

num1=$m

num2=$n

r=`expr$m % $n`

 

while[ $r -ne 0 ]

do

m=$n

n=$r

r=`expr$m % $n`

done

echo"最大公约数是:$n"

min=`expr$num1 \* $num2 / $n`

echo"最小公倍数是:$min"

 

9.输出9*9口诀

#!/bin/sh

echo"九九乘法口诀"

fori in 1 2 3 4 5 6 7 8 9

do

j=1

while[ $j -le $i ]

do

chengji=`expr$j \* $i`

echo-n "$j * $i = $chengji "

j=$(($j+ 1))

done

echo""

done

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值