如何将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表格输出这个数据。任何人都可以指导我这个?在此先感谢

+1

只需在当前正在打印数据的位置添加表格,tr和td标记? –

+0

我想,也可惜不会在bash脚本工作 –

+0

总 Stillfail 通 ScriptError APIName (((j = 1; j “ echo ( ) I = 1;我” 的printf “” 完成 回声 完成 “” –

这是完整的脚本。我认为这会解决问题

#!/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>"