Я работаю над сценарием оболочки, который удаляет дату с веб-страницы, а затем проверяет, находится ли она в последние три дня текущей даты (запустив ее в Cygwin).Если тест пройден, он просто повторяет «PASS», а если он не проходит, он повторяет «FAIL»;
Однако, когда я запускаю свой скрипт, я получаю следующее:
integer expression expected: 1317618000
FAIL
Вот сценарий:
updateStr=$(curl "http://www.mywebsite.com" | grep "Last Update")
dateStr=(`echo $updateStr | sed -e 's/.*Last Update: \([^<]*\)<.*/\1/'`)
update=$(date -d "$dateStr" +%s)
epoch=$(date -d "-3 days ago" +%s)
test "$update" -ge "$epoch" && echo "PASS" || echo "FAIL"
Есть идеи по поводу проблемы?
Редактировать
Вот результат выполнения bash -x
в сценарии:
$ bash -x check_date.sh
++ curl http://www.mywebsite.com
++ grep 'Last Update'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6542 100 6542 0 0 789 0 0:00:08 0:00:08 --:--:-- 1544
+ updateStr=' <span style="float:right">Last Update: 10/3/2011 2:
'8:45 AM</span></p>
++ echo '<span' 'style="float:right">Last' Update: 10/3/2011 2:58:45 'AM</span><
'p>
++ sed -e 's/.*Last Update: \([^<]*\)<.*/\1/'
' dateStr='(10/3/2011 2:58:45 AM)
' +%ste -d '(10/3/2011 2:58:45 AM)
+ update=$'1317618000\r'
++ date -d '-3 days ago' +%s
+ epoch=$'1317938194\r'
+ test $'1317618000\r' -ge $'1317938194\r'
: integer expression expected1317618000
+ echo FAIL
FAIL
Обновление
Я попытался удалить возврат каретки, который появляется в выходных данных даты, но он все еще не работает.Вот обновленный скрипт:
updateStr=$(curl "http://mywebsite.com" | grep "Last Update")
dateStr=$(echo $updateStr | sed -e 's/.*Last Update: \([^<]*\)<.*/\1/')
update=$(date -d "$dateStr" +%s | tr -d '\r')
epoch=$(date -d "3 days ago" +%s | tr -d '\r')
echo "Last Update: $update"
echo "Epoch Date: $epoch"
test "$update" -ge "$epoch" && echo "PASS" || echo "FAIL"
А вот и результат:
$ bash -x ./check_date.sh
++ curl http://mywebsite.com
++ grep 'Last Update'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 6542 100 6542 0 0 17398 0 --:--:-- --:--:-- --:--:-- 19704
+ updateStr=' <span style="float:right">Last Update: 10/6/2011 2:
'0:02 AM</span></p>
++ echo '<span' 'style="float:right">Last' Update: 10/6/2011 2:40:02 'AM</span><
'p>
++ sed -e 's/.*Last Update: \([^<]*\)<.*/\1/'
' dateStr='10/6/2011 2:40:02 AM
' +%ste -d '10/6/2011 2:40:02 AM
++ tr -d '\r'
+ update=$'1317886802\r'
++ date -d '-3 days ago' +%s
++ tr -d '\r'
+ epoch=$'1318184767\r'
' echo 'Last Update: 1317886802
Last Update: 1317886802
' echo 'Epoch Date: 1318184767
Epoch Date: 1318184767
+ test $'1317886802\r' -ge $'1318184767\r'
: integer expression expected: 1317886802
+ echo FAIL
FAIL