我想翻阅一个文件,一次读两个单词。所以我认为我可以做for循环一次读取一个单词的内容,并不断检查文件。
PS:这是脚本的作用:读取一个有工作时间的文件(开始时间和结束时间,当天可能有更多的一对)并给出该月的总时间。
我想一次读两个单词,以便更容易计算出每天的工作小时数。特别是因为小时输入像12:16而且我必须解析每个小时的小时和分钟
修改 带小时的文本文件如下所示: 8:50 15:60 9:9 13:41 14:23 18:40 10:00 18:00
请注意每个条目之间的间距不一定要精确,以及如何在同一天离开工作并返回的时间超过2次
而且我还没有编写太多的代码,因为我无法弄清楚我将如何编写代码。
答案 0 :(得分:0)
如果你使用shell内置的单词定义,即除了" $ IFS"之外的每个连续字符串,你可以一次读取一个单词的文件,就像这样:
for word in $(<file); do
action "$word"
done
要一次操作两个字,您需要累积:
pair=()
for word in $(<file); do
pair+=("$word")
if (( ${#pair[@]} % 2 == 0 )); then
action "${pair[@]}"
pair=()
fi
done
# Decide if you want to handle the scenario where there's a final word
# … action "${pair[@]}"
答案 1 :(得分:0)
所有for循环都可以实现为while循环:
WORD_PAIRS=(a b c d e f g h)
COUNT=${#WORD_PAIRS[@]}
i=0
while [[ $i -lt $COUNT ]]
do
WORD1=${WORD_PAIRS[$i]}
WORD2=${WORD_PAIRS[$i + 1]}
echo $WORD1 $WORD2
i=$(($i + 2))
done
输出:
a b
c d
e f
g h