【问题标题】:(ksh) (html) Creating a table row for every single element of an array(ksh) (html) 为数组的每个元素创建一个表格行
【发布时间】:2015-12-29 17:50:10
【问题描述】:

使用 Kornshell (ksh),我有 3 个数组,其中包含 日期、文件名、文件内容 - 数组大小每天都不同。

我需要一个循环来为数组中的每个元素创建一个表格行,并使用计数器将数组中的数据填充到它们中。

因此,有没有更好的方法,而不是为每个数组元素手动重复和输入如下几行(sn-p)?

附: - 尝试使用 echo ${array[@],这仅适用于前 2 个数组。但由于第 3 个数组包含每个文件的内容(很长),因此它不能用作表格格式。

...

echo "<tr>"
echo "<td>`echo ${array[2]}`</td>"
echo "<td>`echo ${array[2]}`</td>"
echo "<td><pre>`(cat "${array[2]}")`</pre></td>"
echo "</tr>"

echo "<tr>"
echo "<td>`echo ${array[3]}`</td>"
echo "<td>`echo ${array[3]}`</td>"
echo "<td><pre>`(cat "${array[3]}")`</pre></td>"
echo "</tr>"

...
...
) | /usr/sbin/sendmail -t

【问题讨论】:

    标签: html arrays shell unix ksh


    【解决方案1】:

    你需要迭代

    len=${#date[@]}
    for ((i=0; i<len; i++)); do
        echo "<tr>"
        echo "<td>${date[i]}`</td>"
        echo "<td>${filename[i]}`</td>"
        echo "<td><pre>$(< "${filename[i]}")</pre></td>"
        echo "</tr>"
    done
    

    您无需echo 变量即可获取其内容,只需取消引用即可。

    $(&lt; filename) 等价于 $(cat filename),但它是 shell 内置的

    【讨论】:

      【解决方案2】:

      像任何语言一样,使用循环:

      dates=(...)
      filenames=(...)
      contents=(...)
      for ((i=0; i<${#dates[@]}; i++)); do
        echo "<tr>"
        echo "<td>${dates[i]}</td>"
        echo "<td>${filenames[i]}</td>"
        echo "<td><pre>${contents[i]}</pre></td>"
        echo "</tr>"
      done | sendmail ...
      

      【讨论】:

        猜你喜欢
        • 2020-08-05
        • 2019-01-07
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-31
        相关资源
        最近更新 更多