2017-07-27 8 views
1

は、私は次のように私は2次元配列で私のデータを持っている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

動作しません。そのことを試してみました "<表スタイルを=" 幅:50% "> 合計 Stillfail パス ScriptError APIName用「 (( "(;; <= NUM​​_ROWS J J ++)(J = 1) のprintfを行う がため エコー" I = 1; I <= NUM​​_COLUMNS;私は++)) のprintf "​​" $ {行列[$ jを、$ i]は} "" printfの "" が行わ が行わ "" –

答えて

0

ここに完全なスクリプトです。私はこれが問題を解決すると思う。

#!/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>" 
関連する問題