【发布时间】:2014-01-20 06:25:41
【问题描述】:
我有一个读取循环,它正在读取一个变量,但没有按照我期望的方式运行。我想读取变量的每一行并处理每一行。这是我的循环:
while read -r line
do
echo $line | sed 's/<\/td>/<\/td>$/g' | cut -d'$' -f2,3,4 >> file.txt
done <<< "$TABLE"
我希望它处理文件的每一行,但它只处理第一行。如果我的中间只是 echo $line >> file.txt 它按预期工作。这里发生了什么?如何获得我想要的行为?
【问题讨论】:
-
你能显示
cat -vte <<< "$TABLE"的输出吗 -
输出只是
$ -
所以你原来的字符串
$TABLE是空的? -
我的错误输出是这样的:
<tr><td></td><td></td>...</tr>^M<tr><td></td><td></td>...</tr>^M<tr><td></td>等等。全部在一条线上。 -
不确定我在这里看到了整个
while循环的意义,除非它只是删除空格。为什么不只是sed '/<\/td>/<\/td>$/g' <<< "${TABLE}" | cut -d'$' -f2-4 > file.txt?