日期:2014-05-16  浏览次数:20589 次

帮忙给写3个shell程序
1.   编写一个SHELL程序,接受2—15范围内的一个数作为参数,在标准输出设备上用+号,-号和竖杠(|)画出以给定的参数值为边的正方形。如果命令行中参数数目不对或数值超出范围,显示相应的错误信息。      
       
    +————+            
    |                   |      
    |                   |      
    +————+  
2.   编写一个SHELL程序,使它只接受一个命令行参数,利用该参数输入一个目录,计算该目录下(不包括子目录)所有文本文件的总行数。
如:某个目录下有三个文本文件文件1.txt,2.txt,3.txt,   分别是3行,20行,19行.那么统计结果应该是42行。
如果命令行参数输入的是文件,则显示错误信息。

3.   编写一个SHELL程序,实现查看指定用户是否登录到系统上,如果已登录,显示“xxx用户已登录”并返回0,否则在该用户登录时显示“xxx用户现在登录到系统中”并返回1。

------解决方案--------------------
50分少了点吧,呵呵
1.
echo "请输入一个数字\c "
read size
len=`expr $size : ".* "`
result=0
if [ $len = 1 ]
then
result=`expr $size : "[2-9] "`
elif [ $len = 2 ]
then
result=`expr $size : "1[0-5] "`
fi
[ $result = 0 ] && {
echo 输入的数字必须在2~15之间
exit 1
}
let size=size-2
head= '+ '
line= '| '
i=$size
sp= ' '
while [ "$i " -ne "0 " ]
do
head= "${head}- "
line= "${line} "
let i=i-1
done
head= "$head+ "
line= "$line| "
echo $head
while [ "$size " -ne "0 " ]
do
echo "$line "
let size=size-1
done
echo $head