注:前言、目录见 https://blog.csdn.net/qq_44220418/article/details/108428971
友情提醒:仅供参考理解,请勿直接复制粘贴
友情提醒:仅供参考理解,请勿直接复制粘贴
友情提醒:仅供参考理解,请勿直接复制粘贴
第一题
编写一个Shell程序,完成读入一组整数,以
-999
结束
输出其中正数个数和负数的累加和
如
\qquad 输入:12 -5 18 58 -3 80 -999
(每个数据以回车结束)
\qquad 输出:正数个数N= 4,负数累加和为 -8
cnt=0 # 记录正数个数
sum=0 # 记录负数累加和
# 循环每行读取一个数到num
while read num
do
# 输入-999瑞出
if [ ${num} -eq -999 ]
then
break
fi
# 判断正数(正数:统计个数;非正数:求和)
if [ ${num} -gt 0 ]
then
let cnt++
else
let sum+=num
fi
done
echo "正数个数N=${cnt},负数累加和为${sum}"
示例截图
第二题
编写shell程序,文件名
test_ count
,统计当前目录中指定学生(姓名由键盘读入,quit
结束操作)
自定义函数examcount()
返回某学生的上传的文件数量(文件名中含学生姓名),并将记录学生姓名 – 实验文件数
存入文件examlist
中
examcount() {
cnt=`find -maxdepth 1 -name "*${1}*" | wc -l`
echo "${1} - ${cnt}" >> examlist
return ${cnt}
}
while read name
do
# 输入"quit"退出
if test ${name} = "quit"
then
break
fi
# 对每一个非"quit"输入使用examcount函数进行统计
examcount ${name}
done
示例截图