一、创建名为Organizer的shell脚本用以整理学生数据:假设有一名为Students的文本文件存放学生基本信息,每一行的格式为:“姓名;专业;省份”,该脚本能够将学生信息依据省份导入北方和南方个两个不同的文件(华北、东北、西北地区为北方,其余为南方),文件名分别是NorthStudents和SouthStudents,如果省份信息存在错误则放入另一个文件ErrStudentsInfo,内容保持不变。要求:
a)结果数据写入必须使用文件描述符。
b)使用函数来判断学生信息应该导入南方还是北方。
1 #!/bin/bash
2 exec 1>NorthStudents
3 exec 3>SouthStudents
4 exec 2>ErrStudentsInfo
5 function locate {
6 IFS=$'\n'";"
7 count=0
8 for pro in $line
9 do
10 count=$[$count+1]
11 if [ $count -eq 3 ]
12 then
13 case $pro in
14 ShanXi | HeiLongJiang)
15 echo "$line";;
16 AnHui | YunNan)
17 echo "$line" >&3;;
18 *) echo "$line" >&2;;
19 esac
20 fi
21 done
22 }
23 file=/home/lhh/shiyan4/Students
24 exec 0< $file
25 while read line
26 do
27 locate $line
28 done
二、创建名为ListNutshell的shell脚本,能够递归遍历命令行参数中指定的文件夹,统计每一个子文件夹所包含的文件数和文件夹数,放入结果文件ListResult中,每一行格式固定为:文件夹名称(带路径);文件数;文件夹数。
1 #!/bin/bash
2 fs=/home/lhh/shiyan4/ListResult
3 exec 1>>ListResult
4 function factories {
5 first=`ls $1`
6 cd $1
7 local dir=0
8 local file=0
9 for i in $first
10 do
11 if [ -d $i ]
12 then
13 dir=$[$dir+1]
14 factories $i
15 else
16 file=$[$file+1]
17 fi
18 done
19 value=";"$dir";"$file";"
20 value2=`pwd`
21 echo $value2$value
22 cd ../
23 }
24 factories $1