如何将2d数组转换为bash/shell中的html文件?
问题描述:
我有,我有我的二维数组数据现在目前我打印这个矩阵如下bash脚本:如何将2d数组转换为bash/shell中的html文件?
f1="%$((${#num_rows}+1))s"
f2=" %12s"
printf "$f1" ''
printf "$f2" "Total"
printf "$f2" "Pass"
printf "$f2" "Stillfail"
printf "$f2" "Failure"
printf "$f2" "APIName"
printf "$f2"
echo
for ((j=1;j<=num_rows;j++)) do
printf "$f1" $j
for ((i=1;i<=num_columns;i++)) do
if [ i == 5 ]; then
printf "%-20s" ${matrix[$j,$i]}
else
printf "$f2" ${matrix[$j,$i]}
done
echo
done
我尝试了很多,但仍然有对齐问题,所以现在我想建立一个html表格输出这个数据。任何人都可以指导我这个?在此先感谢
答
这是完整的脚本。我认为这会解决问题
#!/bin/bash
declare -a matrix
num_rows=6
num_columns=5
for ((i=1;i<=num_columns;i++)) do
for ((j=1;j<=num_rows;j++)) do
matrix[$i,$j]=$RANDOM
done
done
f1="%$((${#num_columns}+3))s"
f2=" %12s"
header=("" "Total" "Pass" "Stillfail" "Failure" "APIName")
printf "$f1|" 'No.'
for ((i=1;i<=num_columns;i++)) do
if [ $i -eq 3 ]; then
printf "%-20s|" ${header[$i]}
else
printf "$f2|" ${header[$i]}
fi
done
echo
for ((j=1;j<=num_rows;j++)) do
printf "$f1|" $j
for ((i=1;i<=num_columns;i++)) do
if [ $i -eq 3 ]; then
printf "%-20s|" ${matrix[$j,$i]}
else
printf "$f2|" ${matrix[$j,$i]}
fi
done
echo
done
echo
echo "-----HTML----"
echo "<table style="width:50%">"
printf "$f1" '<tr><th>No.</th>'
for ((i=1;i<=num_columns;i++)) do
if [ $i -eq 3 ]; then
printf "<th align=left>%s</th>" ${header[$i]}
else
printf "<th align=right>%s</th>" ${header[$i]}
fi
done
echo '</tr>'
for ((j=1;j<=num_rows;j++)) do
printf "<tr><td align=right>$f1</td>" $j
for ((i=1;i<=num_columns;i++)) do
if [ $i -eq 3 ]; then
printf "<td align=left>%s</td>" ${matrix[$j,$i]}
else
printf "<td align=right>%s</td>" ${matrix[$i,$j]}
fi
done
echo '</tr>'
done
echo "</tr></table>"
只需在当前正在打印数据的位置添加表格,tr和td标记? –
我想,也可惜不会在bash脚本工作 –
“