Kos*_*hur 4 bash shell-script test
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
Run Code Online (Sandbox Code Playgroud)
在上面,即使${fin[2]}
不等于 OK ,也只有第一个条件被评估为真。怎么了?
Kus*_*nda 19
运算符-eq
和-ne
是用于比较数值数据的算术运算符。
你想要的是==
和!=
:
if [[ "${fin[2]}" == 'OK' ]] &&
[[ "${fin[7]}" == 'NA' ]]; then
Run Code Online (Sandbox Code Playgroud)
和
elif [[ "${fin[2]}" != 'OK' ]] &&
[[ "${fin[7]}" == 'NA' ]] &&
(( currDate2 < expectedFinishTimes )); then
Run Code Online (Sandbox Code Playgroud)
(例如)。
另外,请注意您的引用和echo
:
echo "<tr id="green">"
Run Code Online (Sandbox Code Playgroud)
最好写成
echo '<tr id="green">'
Run Code Online (Sandbox Code Playgroud)
第一个将产生
<tr id=green>
Run Code Online (Sandbox Code Playgroud)
而第二个将产生
<tr id="green">
Run Code Online (Sandbox Code Playgroud)