Primeiro de tudo, encontrei 2 erros tentando recriar seu problema
date: extra operand 11:34:14'
Try
date --help 'para mais informações.
./script.sh: line 15: 1408448098: No such file or directory
Pelo que entendi você isolou as datas que lhe interessam em arquivo.txt de acordo com a entrada do usuário e deseja contar ocorrências lá.
Codifiquei isto:
#!/bin/bash
#Start/End dates to encolse count range
startDate="2014-08-19 11:28:00"
endDate="2014-08-19 11:35:00"
#Concert these dates to seconds since Epoch
startDateEpoch=$(date --date="$startDate" +%s)
endDateEpoch=$(date --date="$endDate" +%s)
#Read file.txt count occurences
while read line
do
processingDate=$(date --date="$line" +%s)
if [ $processingDate -lt $endDateEpoch ] && \
[ $processingDate -gt $startDateEpoch ]; then
echo "APOEL FC";
fi
done < file.txt
Seu arquivo.txt, conforme anexado aqui, contém 37 linhas, portanto:
sysadmin@omg:/tmp$ ./script.sh | wc
37 74 333
Isso parece correto para
startDate="2014-08-19 11:28:00"
endDate="2014-08-19 11:35:00"
Alterando as datas para:
startDate="2014-08-19 11:28:03"
endDate="2014-08-19 11:34:58"
sysadmin@omg:/tmp$ ./script.sh | wc
35 70 315
retorna 35 ocorrências que parecem corretas, já que a primeira e a última data devem ser excluídas.
Assim, a conversão para segundos desde a Epoch deve ter algo errado na sintaxe
e o < operador na sua declaração if estava causando uma pequena bagunça.
Como diretrizes gerais, prefira usar operadores -lt -gt (menor que, maior que) para if.
Também tente evitar o fechamento do comando nos backticks - Prefira usar $ (comando).
Codificação feliz.