读文件内容,做交互式回答,然后追加文件

来源:互联网 发布:linux下怎么解压缩 编辑:程序博客网 时间:2024/06/05 06:22

目的:使用shell编写一个交互式问答脚本

具体描述:

需要做答的问题存储在一个文件中,问题内容格式如下:

1. the first question()

    A. xxxx  B. xxxx

   C. xxxx  D. xxxx


2. the second question()

    A. xxxx   B. xxxx

    C. xxxx  D. xxxx


3. the third question()

    A. xxxx   B. xxxx

   C. xxxx    D. xxxx

.....

然后循环遍历,每次显示一个问题,等待用户输入,用户输入的答案存到另一个文件中。


脚本如下:

#!/bin/bash


##############################
# Author:   lizw
# Date:      2015/09/17 22:27
# Authority: Anyone
#############################


numberflag=0            #行开头数字标志
lineNo=0                #行数
firstHeadSpaceLine=0    #开头的空白行数,主要用在输出显示中。下面没有用到


#删除答案文件
# 改进之处:
# 每次运行脚本,可向答案文件中追加时间和分割线
# 分割每次输入的答案,做历史记录
if [ -f answer.txt ]
then
    rm -f answer.txt
fi


while read line
do
    ########### Begin 统计开头空白行数 ############
    if [ $lineNo -eq 0 -a -z "$line" ]
    then
        firstHeadSpaceLine=$((firstHeadSpaceLine+1))
continue
    fi
########### end 统计开头空白行数 ############
    
#求取问题文件的行数(除去开头空白行)
    lineNo=$((lineNo+1))
    
################ Begin ######################
# 本段代码解释如下:
# 通过判断每行开头是否是数字,形成问题数组
# 即每一道题所占的行数形成一个数组元素
    num=$(echo $line |cut -d'.' -f 1)
    expr $num + 0 >/dev/null 2>&1
    if [ $? -eq  0 ]
    then
       numberArray[numberflag]=$lineNo
       numberflag=$((numberflag+1))
    fi
################ End ######################


done < quizzTxt.txt


#arrayLength=${#numberArray[@]}
#echo $arrayLength




flag=0            #间隔取数标志
firstNum=0        
secondNum=0
for var in ${numberArray[*]}
do
    if [ $flag -eq 0 ]
    then
        firstNum=$var
flag=$((flag+1))
continue
    fi
    
    secondNum=$var
    for ((i=$firstNum; i<$secondNum;i++))
    do
        #echo $(sed -n "$firstNum, $((secondNum-1))"p quizzTxt.txt) 
echo $(sed -n "$i, $i"p quizzTxt.txt)
    done
    

    read answer
    echo $answer >> answer.txt

    firstNum=$secondNum
done


#追加最后一道题答案
for ((i=$firstNum; i<=$(cat quizzTxt.txt | wc -l); i++))
do
    echo $(sed -n "$i, $i"p quizzTxt.txt)
done
read answer
echo $answer >> answer.txt


具体可参考文件。

0 0
原创粉丝点击