编写一个shell脚本,比较给定目录中40名学生的作业副本是否超过%15。您只能使用以下命令:目录名将作为命令行参数($1)提供 echo、if else、for、while、diff、let
时间: 2023-12-12 21:02:07 浏览: 69
通过shell脚本循环进入目录执行命令的方法
以下是一个实现比较给定目录中40名学生的作业副本是否超过15%的shell脚本:
```bash
#!/bin/bash
dir=$1
total=$(ls $dir | wc -l)
threshold=$(echo "$total * 0.15" | bc | cut -d '.' -f 1)
count=0
for file1 in $dir/*
do
for file2 in $dir/*
do
if [ $file1 != $file2 ]
then
diff -q $file1 $file2 > /dev/null
if [ $? -eq 0 ]
then
count=$(($count + 1))
break
fi
fi
done
done
percentage=$(echo "scale=2; $count / $total * 100" | bc | cut -d '.' -f 1)
if [ $percentage -gt $threshold ]
then
echo "Over 15% of the homework copies are identical."
else
echo "Less than or equal to 15% of the homework copies are identical."
fi
```
该脚本首先获取给定目录中文件的总数,然后计算出15%的阈值。接着,脚本使用两个嵌套的循环来比较目录中的所有文件。如果两个文件相同,则计数器增加1,并且跳出内部循环以避免重复计数。最后,脚本计算出相同文件的百分比,并检查是否超过阈值。如果超过阈值,则输出一条消息指出作业副本超过15%是相同的。否则,输出一条消息表明作业副本不超过15%是相同的。
阅读全文