我想编写一个脚本,如果它们代表当前日期(即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
但它显示错误的输出(所有行都有相同的颜色)。
答案 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