【发布时间】:2021-05-22 14:21:15
【问题描述】:
我正在尝试从名为 index.db 的文本文件生成 html 文件。 index.db 的内容:
file="test.html"
date="2013-01-07"
title="Example title"
file="test2.html"
date="2014-02-04"
title="Second example title"
我正在尝试的命令:
sed '/^$/d;H;1h;$!d;g;s/\n\t\+/ /g' input/index.db |
while read -r line; do
awk '{
print "<h1>"title"</h1>"
print "<b>"date"</b>"
print "<a href=\""file"\">"file"</a>"
}' $line
done
然后它返回:
awk: fatal: cannot open file `title"' for reading: No such file or directory
awk: fatal: cannot open file `example' for reading: No such file or directory
但如果我尝试以下命令,它会完美运行:
sed '/^$/d;H;1h;$!d;g;s/\n\t\+/ /g' input/index.db |
while read -r line; do
echo $line
awk '{
print "<h1>"title"</h1>"
print "<b>"date"</b>"
print "<a href=\""file"\">"file"</a>"
}' file="test.html" date="2013-01-07" title="Example title"
done
【问题讨论】:
-
echo $line本身有问题,出于同样的原因,awk ... $line也是。总是,总是引用你的扩展:echo "$line"和awk ... "$line"——见I just assigned a variable, butecho $variableshows something else -
...也就是说,在循环中启动 awk 是一种“代码气味”——表明您做错了什么。 awk 最好只运行一次,然后让它自己循环。
-
@CharlesDuffy
echo $line只是为了查看命令是否运行了预期的次数。也就是说,评论$line不会给出错误,但仍然不会给出所需的输出。