UNIX脚本 - 根据当前日期着色HTML内容

时间:2017-07-13 18:37:11

标签: html bash unix

我想编写一个脚本,如果它们代表当前日期(即2017-07-13,第二行应为绿色),将为输入绿色的行着色,否则为红色。

输入格式(CSV):

if (($ua == '' || preg_match($uachar, $ua)) &&
    strpos($requestUri, '/wap') === false &&
    strpos($requestUri, '/mobile') === false
) {
    $location = 'mobile/';
    header("Location: $location");
    exit;
}

这是我到目前为止所做的:

Feed1,2017-07-01
Feed2,2017-07-13
Feed3,2017-07-03

但它显示错误的输出(所有行都有相同的颜色)。

2 个答案:

答案 0 :(得分:0)

第一个问题 - 您的数据与您在read命令中指定的变量不匹配。

第一个问题 - $DATEVALID的价值是什么?

echo您的变量将对解决这些类型的问题大有帮助。

答案 1 :(得分:0)

我发现您的代码可能存在一些问题。在编辑原始问题时已修复了一些问题,请在SO上提问时考虑正确格式化代码。

您正在以错误的顺序从CSV中读取字段。

read dtts feed # This means the first field is $dtts, the second is $feed

所以while循环应该看起来像

while IFS="," read feed dtts; do

最后,您没有提供对$DATEVALID$INPUTFILE负责的代码。一个重要的问题是$DATEVALID是否与输入文件中使用的格式相同。要在shell脚本中获取此日期,您可以尝试:

DATEVALID=`date "+%Y-%m-%d"`

这应该以您需要的YYYY-MM-DD格式为您提供今天的日期。总结一下:

DATEVALID=`date "+%Y-%m-%d"`
INPUTFILE="input.csv"
while IFS="," read feed dtts; do
  echo "<tr>"
  if [ "$dtts" == "$DATEVALID" ]; then
    echo "<td><font color=green>$dtts</font></td>"
    echo "<td bgcolor=green>$feed</td>"
  else
    echo "<td><font color=red>$dtts</font></td>"
    echo "<td bgcolor=red>$feed</td>"
  fi
  echo "</tr>"
done < $INPUTFILE