使用for循环语句编写一段B-shell程序,完成显示用户注册目录下的a_sub, b_sub子目录下的所有C程序文件及其目标文件的列表。
dirlst="a_sub b_sub"
for i in $dirlst
do
cd $HOME/$i
ls -l *.c
done
编写一段shell程序完成:根据从键盘输入的学生成绩,显示相应的成绩标准(分出不及格、及格、中、良和优秀等)。 如果输入的数据不是合法的怎么处理?
echo "请输入成绩"
read a
case $a in
9[0-9]|100)echo "优秀";;
8[0-9])echo "良";;
7[0-9])echo "中";;
6[0-9])echo "及格";;
[0-5][0-9])echo "不及格";;
*) echo "again input";;
esac
为便于系统管理员对磁盘分配的管理,请编写一段B-shell程序,当文件系统/home占用空间改变时给出相应的信息提示。要求/home占用量在系统磁盘中为: ①小于50%时,提示“用户文件系统磁盘使用负荷量小”。 ②大于50%,小于90%时,提示“用户文件系统磁盘使用负荷量正常”。 ③大于等于90%时,提示“用户文件系统磁盘使用负荷量偏大。
#!/bin/bash
re=`du /home |grep /home$ |cut -f 1`
ld=`df / |grep /|tr -s [:space:]|cut -f 2 -d " "`
re=`echo "scale=0; ${re}*100/${ld}" |bc`
case $re in
9[0-9])echo "用户文件系统磁盘使用负荷量偏大";;
[5-8][0-9])echo "用户文件系统磁盘使用负荷量正常";;
[0-4][0-9]|[0-9]) echo "用户文件系统磁盘使用负荷量小";;
esac
假设score.txt文件中保存了三个班级的学生的某门课程考试成绩,请编写一段shell程序计算每个班级的学生人数与平均分。 score.txt 班级 姓名 成绩 1 aa 88 1 bb 83 2 cc 70 2 dd 90 3 ee 91 3 ff 77
#!/bin/bash
stusum1=0
stusum2=0
stusum3=0
scoressum1=0
scoressum2=0
scoressum3=0
while read line
do
classnum=`echo $line|grep [0-9]|tr -s [:space:]|cut -d " " -f 1`
score=`echo $line|grep [0-9]|tr -s [:space:]|cut -d " " -f 3`
case $classnum in
1) stusum1=`expr $stusum1 + 1`
scoresum1=`expr $scoresum1 + $score`
;;
2) stusum2=`expr $stusum2 + 1`
scoresum2=`expr $scoresum2 + $score`
;;
3) stusum3=`expr $stusum3 + 1`
scoresum3=`expr $scoresum3 + $score`
;;
esac
done < score.txt
echo "1班的人数:$stusum1 2班的人数:$stusum2 3班的人数:$stusum3"
echo -e "1班某科平均分:`expr $scoresum1 / $stusum1`\n2班某科平均分:`expr $scoresum2 / $stusum2`\n3班某科平均分:`expr $scoresum3 / $stusum3`\n"
如果数据文件的内容是3个班级5门不同课程的内容,程序应该怎么调整?
score_1.txt
班级 姓名 语文 数学 英语 生物 化学
201 aa 88 77 72 73 74
201 bb 83 82 81 80 79
202 cc 70 69 68 67 66
202 dd 90 89 88 87 86
203 ee 91 90 89 88 87
203 ff 77 76 75 74 73
!/bin/bash
class="201 202 203"
for i in $class
do
total=`grep -F $i score_1.txt|wc -l`
echo "$i班:$total人"
for j in 3 4 5 6 7
do
x=`sed -n '1p' score_1.txt|tr -s [:space:]|cut -d " " -f $j`
objectscore=`grep -F $i score_1.txt|tr -s [:space:]|cut -d " " -f $j`
average=`grep -F $i score_1.txt|awk -F" " '{sum+=$'$j'}END{print ":",sum/NR}'`
echo "$i班$x平均分$average"
done
done
标签:shell,grep,expr,编程,echo,score,linux,磁盘,txt
From: https://blog.51cto.com/u_16058292/6192232