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
~