一、脚本要求
脚本1:
编写一段bash脚本,满足如下要求:
– 脚本接收2个整数参数,用来指定开始和结束
– 计算并输出从开始到结束整数间所有偶数的和
提示:
– 采用for或while循环
– 引入局部变量对循环进行计数
– 引入局部变量计算中间结果
脚本2:
编写一段bash要求:
– 脚本接收1个字符串参数,用于指定目标路径
– 将目标路径中的所有目录名称输出到/tmp/dir.txt文件中
– 将目标路径中的所有目录名称输出到/tmp/files.txt文件中
提示:
– for filename in ls
– ls -F
– 正在表达式匹配:if [[ $filename=~(.*V$) ]]
– 注意每行代码中的空格
– 采用echo输出
脚本3:
编写一段awk计算score.txt中后三列的平均分:
Marry 2143 78 84 77
Jack 2321 66 78 45
Tom 2122 48 77 71
Mike 2537 87 97 95
Bob 2415 40 57 62
二、编写过程
脚本1:
- 使用
vi test01.sh
进行脚本1的编写
- 进入vi编辑器后,通过键盘i键进入插入模式(可在页面左下查看是否进入插入模式)
- 开始编辑代码
#!/bin/sh
echo "Please input the begin number:"
# read写入的参数方式类似于c语言中的scanf
# 也可以用$1来获取编译时的传参
read a
echo "Please input the end number:"
read b
c=0
# -le 表示小于等于
while [ $a -le $b ]
do
num=$(expr $a % 2)
# -eq 表示等于
if [ $num -eq 0 ]
then
c=$(($a+$c))
a=$(($a+1))
else
a=$(($a+1))
fi
done
echo "The end number: $c"
- 编写完毕后,先按sec退出插入模式,再输入
:wq
(意思为保存且退出) - 运行
脚本2:
- 使用
vi test02.sh
进行脚本2的编写 - 编写代码如下:
#!/bin/sh
touch "/tmp/dir.txt"
touch "/tmp/files.txt"
echo "Please input:"
read path
for file in $(ls $path)
do
# -f 是判断该文件是否为常规文件
if [ -f $path"/"$file ]
then
echo $file "isfile"
echo $file >> "/tmp/files.txt"
else
echo $file "isdir"
echo $file >> "/tmp/dir.txt"
fi
done
- 进行测试准备(创建目录文件和可读文件)
- 运行
脚本3:
- 使用
touch score.txt
创建成绩文本文档并在桌面打开文件编写 - 使用awk命令进行后三列的平均分计算
awk 'BEGIN{sum1=0;sum2=0;sum3=0}{sum1+=$3;sum2+=$4;sum3+=$5}END{print "Average1 = ",sum1/NR,"Average2 = ",sum2/NR,"Average3 = ",sum3/NR}' score.txt