if [[ ${fin[2]} -eq OK && ${fin[7]} -eq NA ]]
then
echo "<tr id="green">" >> /tmp/mailt.txt
elif [[ ${fin[2]} -eq OK && ${fin[7]} -lt 0 ]]
then
echo "<tr id="yellow">" >> /tmp/mailt.txt
elif [[ ${fin[2]} -ne OK && ${fin[7]} -eq NA && $currDate2 -gt $expectedFinishTimes ]]
then
echo "<tr id="red">" >> /tmp/mailt.txt
elif [[ ${fin[2]} -ne OK && ${fin[7]} -eq NA && $currDate2 -lt $expectedFinishTimes ]]
then
echo "<tr id="white">" >> /tmp/mailt.txt
fi
在上面,即使${fin[2]}
不等于 OK,也只有第一个条件被评估为 true。怎么了?
答案1
运营商-eq
和-ne
是算术用于比较的运算符数值数据。
你想要的是==
和!=
:
if [[ "${fin[2]}" == 'OK' ]] &&
[[ "${fin[7]}" == 'NA' ]]; then
和
elif [[ "${fin[2]}" != 'OK' ]] &&
[[ "${fin[7]}" == 'NA' ]] &&
(( currDate2 < expectedFinishTimes )); then
(例如)。
另外,请注意引用和echo
:
echo "<tr id="green">"
更好地写成
echo '<tr id="green">'
第一个将产生
<tr id=green>
而第二个会产生
<tr id="green">