如何从循环中的文件中读取行?

时间:2016-10-29 20:59:17

标签: bash loops

我的目标是TTS文本文件的每一行

首先,我计算文本文件的行数:

#!/bin/bash

LINES=$(cat /home/mytext.txt | wc -l)

我想定义一个循环:

let "n = $LINES"
while [ $n -ne 0 ]

TTS "the first line"
sleep 5

let "n--"
done
exit

然后循环重复读取下一行...等,只要下一行存在。

1 个答案:

答案 0 :(得分:2)

你想要的是read

cat /home/mytext.txt |\
while IFS='' read -r CUR_LINE || [ -n "$CUR_LINE" ]; do
   do_something_with "$CUR_LINE"
done

它将:捕捉你的文本文件,读取下一行,直到不再留下行,并对每行做一些事情。注意,|| [ -n "$CUR_LINE" ]位是为了确保如果文本文件没有以空行结束,则while不会以错误状态结束(非零退出代码) 。如果您使用set -e运行脚本(以便在出错时终止),这很重要。