bash 쉘에서 2D 배열을 사용하여 HTML 테이블을 만드는 방법

17417 단어 HTMLBash배열

하고 싶은 일


  • HTML 테이블 만들기
  • 테이블 행이 너무 많습니다
  • 사양 변경에 의해 행의 내용이 바뀔 가능성이 크다
  • 열이 정해져 있다
  • 진짜는 JSP를 만들고 싶기 때문에 변수명을 사이에 넣는다
  • 사정에 따라 기존의 쓰는 방법은 바꿀 수 없다


  • 본심 : 귀찮은 일은 하고 싶지 않다



    꾸준히 쓰는 것도 꾸준히 수정하는 것도 귀찮아

    HTML 테이블을 만드는 방법



    1. 테이블의 한 줄에 사용할 문자군을 만든다


  • 사양 등에서 Excel 등으로 공백으로 구분하여 문자열을 결합합니다.
  • 싱글 따옴표(') 또는 더블 따옴표(")로 둘러싸는

  • (샘플)
    '곰 모리 peachpuff'
    '고양이 거리 lightpink'

    2. bash로 쉘 만들기


  • 로 만든 한 줄에 사용하는 문자군은 배열에 딱 붙인다

  • htmlMaker.sh
    #!/bin/bash
    
    dataArray=(
        'くま もり peachpuff'
        'ねこ まち lightpink'
        'さる 上野動物園 burlywood'
        'りす 鎌倉 khaki'
        '魚 海 lightblue'
    )
    
    fileName='Table.html'
    
    echo '<html>' > $fileName
    echo '<table bordercolor="black">' >> $fileName
    echo '<tr>' >> $fileName
    echo '<th>動物</th>' >> $fileName
    echo '<th>居場所</th>' >> $fileName
    echo '</tr>' >> $fileName
    
    for i in "${dataArray[@]}"; do
        data=(${i[@]})
        animal=${data[0]}
        place=${data[1]}
        color=${data[2]}
        echo '<tr>' >> $fileName
        echo '<td bgcolor="'$color'">'$animal'</td>' >> $fileName
        echo '<td bgcolor="'$color'">'$place'</td>' >> $fileName
        echo '</tr>' >> $fileName
    done
    
    echo '</table>' >> $fileName
    echo '</html>' >> $fileName
    

    3. 쉘을 움직여 HTML을 출력하도록 한다.



    Table.html
    <html>
    <table bordercolor="black">
    <tr>
    <th>動物</th>
    <th>居場所</th>
    </tr>
    <tr>
    <td bgcolor="peachpuff">くま</td>
    <td bgcolor="peachpuff">もり</td>
    </tr>
    <tr>
    <td bgcolor="lightpink">ねこ</td>
    <td bgcolor="lightpink">まち</td>
    </tr>
    <tr>
    <td bgcolor="burlywood">さる</td>
    <td bgcolor="burlywood">上野動物園</td>
    </tr>
    <tr>
    <td bgcolor="khaki">りす</td>
    <td bgcolor="khaki">鎌倉</td>
    </tr>
    <tr>
    <td bgcolor="lightblue"></td>
    <td bgcolor="lightblue"></td>
    </tr>
    </table>
    </html>
    

    4. 본다





    이 방법의 단점



    공백이 있는 문자열을 사용할 수 없음



    누군가 좋은 방법을 말해주십시오.

    이 방법을 따르기 전까지의 실패



    초보자 지나 bash에서 다차원 배열은 궁리하지 않으면 할 수 없다는 것을 몰랐다


    dataArray=(
        ('くま' 'もり' 'peachpuff')
    )
    

    이렇게 쓰고 화가났다.
    $ bash htmlMaker.sh 
    htmlMaker.sh: line 4: syntax error near unexpected token `('
    htmlMaker.sh: line 4: `    ('くま' 'もり' 'peachpuff')'
    htmlMaker.sh: line 9: syntax error near unexpected token `)'
    htmlMaker.sh: line 9: `)'
    

    그러니까 BASH에서 2차원 배열 의 방법을 베이스로 생각하기로 했다

    배열을 전개하는 방법을 몰랐다.


    for i in $dataArray; do
        data=$i
        animal=$data[0]
        place=$data[1]
        color=$data[2]
    <省略>
    done
    

    이렇게 썼다.
    <html>
    <table bordercolor="black">
    <tr>
    <th>動物</th>
    <th>居場所</th>
    </tr>
    <tr>
    <td bgcolor="くま[2]">くま[0]</td>
    <td bgcolor="くま[2]">くま[1]</td>
    </tr>
    <tr>
    <td bgcolor="もり[2]">もり[0]</td>
    <td bgcolor="もり[2]">もり[1]</td>
    </tr>
    <tr>
    <td bgcolor="peachpuff[2]">peachpuff[0]</td>
    <td bgcolor="peachpuff[2]">peachpuff[1]</td>
    </tr>
    </table>
    </html>
    

    배열 사용 에서 공부하고 수정했습니다.

    더블 따옴표 (")로 배열을 넘길 필요성을 몰랐다.


    for i in ${dataArray[@]}; do
        data=$i
        animal=${data[0]}
        place=${data[1]}
        color=${data[2]}
    <省略>
    done
    

    이렇게 썼다.
    <html>
    <table bordercolor="black">
    <tr>
    <th>動物</th>
    <th>居場所</th>
    </tr>
    <tr>
    <td bgcolor="">くま</td>
    <td bgcolor=""></td>
    </tr>
    <tr>
    <td bgcolor="">もり</td>
    <td bgcolor=""></td>
    </tr>
    <tr>
    <td bgcolor="">peachpuff</td>
    <td bgcolor=""></td>
    </tr>
    <tr>
    <td bgcolor="">ねこ</td>
    <省略>
    <td bgcolor="">lightblue</td>
    <td bgcolor=""></td>
    </tr>
    </table>
    </html>
    

    【bash】쉘의 배열에 대해서 의 사이트에서 가르쳐 주고 다시

    배열에 있는 배열을 뽑는 방법을 모르는


    for i in "${dataArray[@]}"; do
        data=$i
    <省略>
    done
    

    이렇게 썼다.
    <html>
    <table bordercolor="black">
    <tr>
    <th>動物</th>
    <th>居場所</th>
    </tr>
    <tr>
    <td bgcolor="">くま もり peachpuff</td>
    <td bgcolor=""></td>
    </tr>
    <tr>
    <td bgcolor="">ねこ まち lightpink</td>
    <td bgcolor=""></td>
    </tr>
    <tr>
    <td bgcolor="">さる 上野動物園 burlywood</td>
    <td bgcolor=""></td>
    </tr>
    <tr>
    <td bgcolor="">りす 鎌倉 khaki</td>
    <td bgcolor=""></td>
    </tr>
    <tr>
    <td bgcolor="">魚 海 lightblue</td>
    <td bgcolor=""></td>
    </tr>
    </table>
    </html>
    

    이렇게 해도 결과는 동일했습니다.
    for i in "${dataArray[@]}"; do
        data=${i[@]}
    <省略>
    done
    

    bash의 감정을 화장실에서 생각하고 생각해 수정했습니다

    좋은 웹페이지 즐겨찾기