我的目标是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
然后循环重复读取下一行...等,只要下一行存在。
答案 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
运行脚本(以便在出错时终止),这很重要。