我尝试将json文件转换为html文件。这样我以后就可以把它们导入到网站上。我的想法是运行json2table创建一个表,然后将其写入html目录。但是我不知道如何重定向json2table的输出。
for file in $(ls json/*.json); do cat $file | json2table > html/$file.html; done
但是这个结尾是
bash: html/json/26.json.html: No such file or directory
有没有人可以帮助修复这个错误?谢谢
Silvio
发布于 2018-07-02 04:19:40
您的${file}
包含json
目录。当您没有目录html/json
时,重定向将失败。
我认为你有一个子目录html
,从${file}
中去掉路径就可以了:
for file in json/*.json; do
cat "${file}" | json2table > html/"${file#*/}".html
# OR avoid cat with
# json2table < "${file}" > html/"${file#*/}".html
done
作为奖励,我删除了ls
,在文件名中添加了带空格的引号,并在评论中展示了如何避免cat
。
发布于 2018-07-03 01:43:14
我想给所有完整的脚本,如果人们有相同的问题/项目或如何调用它。
第一个循环从JSON文件生成HTML表,并将其存储在HTML文件中。第二个循环将第一个循环的结果与一个模板结合起来,这样您就拥有了一个完整的页面。在body标记中,简单地搜索、删除和填充表中的include。
#!/bin/bash
jdata="json"
hdata="html"
template="tpl/tpl.html"
tmp="tmp"
# convert json to html
# https://stackoverflow.com/questions/51126226/combine-for-loop-with-cat-and-json2html/51126732#51126732
for file in $jdata/*.json;
do
# php
#php json.php $file > tmp/${file#*/}.html
# ruby
json2table < "${file}" > $hdata/"${file#*/}".html
done
# write html file
# https://unix.stackexchange.com/questions/32908/how-to-insert-the-content-of-a-file-into-another-file-before-a-pattern-marker
for file in html/*.html;
do
# extract Project Number for newfile
filename="$(basename -- "$file")"
extension="${filename#*.}"
filename="${filename%.*}"
# save the project number
NO="$(grep "No" $jdata/$filename | sed 's/[^0-9]*//g')"
OUT="$NO.html"
# write new html file
sed 's/include/$x/g' tpl/tpl.html | x="$(<$file)" envsubst '$x' > html/$OUT
done
感谢您的帮助&美好的一天Silvio
https://stackoverflow.com/questions/51126226
复制相似问题