LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1199|回复: 8

谁能帮我看看这个。。初学不知道怎么写好?!

[复制链接]
发表于 2005-11-20 01:36:36 | 显示全部楼层 |阅读模式
麻烦朋友帮忙看看这个怎么写。。初学。。。不知道怎么下手。。。

给点思路也好。。。

把关键的点告诉就好了了。。

谢谢各位了


题目:
一、创建以下菜单程序:
USER: PC**            HOST: ********             DATE: **/10/2005
A: 创建子目录并复制文件
B: 文件权限测试
C: 文件字符转换
D: 文件总数统计
E: 文本文件行数统计
Q: 退出系统
—————————————————————————————————
  A:在用户家目录下创建名字为本人姓名的子目录,其存取权限为(drwxr-xr-x)。测试目录确实存在后将file1、file2两文件考入其中并分别显示两文件的内容。
  B:测试当前用户对系统中某文件是否有r、w、x的权限,输出测试结果。
  C:将file1、file2两文件中的小写字符转换为大写,逐一显示转换后的文件内容。
  D:统计某个目录下文件的总数,输出结果中包含该目录的名称及文件总数。
  E:统计系统中某文本文件的行数。

二、假设pc.txt文件中保存了三个班级的学生成绩,请编写一段shell程序计算每个班级的学生人数与平均分。
pc.txt文件内容如下:
Zhanghong:class1:75  
                wangliang:class2:68
                liming:class3:99
                dave:class2:83
                liuhai:class3:23
                fangyuan:class1:77
  注:以上各例均要输出当前执行的SHELL程序的名称
发表于 2005-11-20 03:03:10 | 显示全部楼层
作业的话,谁帮忙做做?(最好没人!)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-20 09:07:02 | 显示全部楼层
为什么没人管?~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-20 12:58:44 | 显示全部楼层
# Display menu
#
DATE= $( date +%D )
HOST='hostname -s'

while :
do
tput clear
echo "
=====================================================
    UserUSER   HostHOST   DateDATE
=====================================================
       
        1: Create a directiry and copy a file
        2: Test a file with "chmod"
        3: Covert char...
        4: Total of files
        5: Total about lines in flies
        Q: Quit

=====================================================
    Please select :
"
read choice
echo
case $choice
in
  1) echo 'file1' > file1
     echo 'file2' > file2
     mkdir "$USER"
     chmod 700 "$USER"
     if [ -d /"$HOME"/"$USER" ]
     then
        echo "Now copy file1 file2 to $HOME/$USER/"
        mv file1 file2 $HOME/$USER
        if [ -e  $HOME/$USER/file1 -a -e $HOME/$USER/file2 ]
        then
           echo "Successful!"
        fi
     echo
     cat $HOME/$USER/file1
     cat $HOME/$USER/file2
     fi
     ;;
   2) echo 'Please type a location of file :'
      read URL
      ls -l $URL
      ;;
   3) #if [ -e $HOME/$USER/file1 -a -e $HOME/$USER/file2]
      #then
      echo "Now file1"
         tr '[a-z]' '[A-Z]' < $HOME/$USER/file1
      echo "Now file2"
         tr '[a-z]' '[A-Z]' < $HOME/$USER/file2
      #fi
      ;;
   4) echo "lease type a directiry :"
      read dir
      echo "dir"
      ls -l $dir | grep '^-' | wc -l
      ;;
   5) echo "lease type a file :"
      read file
      if [ -e $file ]
      then
         wc -l $file
      else
         echo "error"
      fi
      ;;
   Q|q) exit 0
esac

done


我做的第一个。。不知道怎么把时间和HOST名字加上。麻烦版主指点。。

还有第二个。不知道用什么方法+数字。。。

我用的是cut -d:f2,3

谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-21 00:54:08 | 显示全部楼层
版主我大部分都自己做了。。剩下的就帮忙指点一下吧。。谢谢了
回复 支持 反对

使用道具 举报

发表于 2005-11-21 01:06:24 | 显示全部楼层
expr是算术用的,不过不支持小数点。

DATE=$(date +%D)
HOST=$(hostname -s)

你的中间有空格,还有,是用``(反引号)的,不是用''(单引号)的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-21 12:03:29 | 显示全部楼层
谢谢^_^
回复 支持 反对

使用道具 举报

发表于 2005-11-21 13:22:28 | 显示全部楼层
可怜的学生阿.
不知道我的学生有没有这样的捏
回复 支持 反对

使用道具 举报

发表于 2005-11-21 20:18:58 | 显示全部楼层

第二题

#! /bin/sh
num1=0
num2=0
num3=0
mark1=0
mark2=0
mark3=0
while read line
do
class=`echo $line|awk -F: '{print $2}'`
mark=`echo $line|awk -F: '{print $3}'`
case $class
in
class1)
num1=`expr $num1 + 1`
mark1=`expr $mark1 + $mark`
;;
class2)
num2=`expr $num2 + 1`
mark2=`expr $mark2 + $mark`
;;
class3)
num3=`expr $num3 + 1`
mark3=`expr $mark3 + $mark`
;;
esac
done < pc.txt
ah=`expr $mark1 \/ $num1`
#al=`expr $mark1 - $ah \* $num1`

bh=`expr $mark2 \/ $num2`
#bl=`expr $mark2 - $bh \* $num2`

ch=`expr $mark3 \/ $num3`
#cl=`expr $mark3 - $ch \* $num3`

echo "$num1 students in class1, avg is: $ah"
echo "$num2 students in class2, avg is: $bh"
echo "$num3 students in class3, avg is: $ch"
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表