Не удается выполнить эхо-запрос с одним интерфейсом после связывания

Ваша идея верна, но вы могли бы исправить несколько вещей, чтобы скрипт работал должным образом.

  1. Во-первых, использование catв файле, сохранение в переменной и зацикливание — это в лучшем случае анти-паттерн -. При таком подходе строки будут разбиваться пробелами. Вместо этого используйте перенаправление файлов с помощью цикла while.
  2. Всегда заключайте переменные оболочки в кавычки, чтобы сохранить содержимое переменных и предотвратить разбиение слов -, как указано в предыдущем пункте
  3. Вместо grepиспользуйте встроенную поддержку регулярных выражений bashдля извлечения строки даты для преобразования EPOCH
  4. По умолчанию bashне предоставляет возможности сравнения dateстрок, вам необходимо преобразовать их в эквивалентные значения EPOCH и выполнить целочисленное сравнение

Итак, собираем это вместе, без использования каких-либо сторонних инструментов и только с внутренними компонентами оболочки. Требуется команда dateиз GNU utils для использования флага -dи может не работать на родных машинах dateиз *BSD.

#!/usr/bin/env bash   

errorCodeFilePath="/home/.errorfile.log"

re='[0-9]+/[0-9]+/[0-9]+:[0-9]+\.[0-9]+\.[0-9]+'

convDateString() {
    day="${1##*:}"
    time="${1%%:*}"
    printf '%d' "$(date -d"$time ${day//./:}" +%s)"
}

while IFS= read -r line; do
    inputArg="$1"
    inputEPOCH="$(convDateString "${inputArg}")"
    if [[ $line =~ $re ]]; then
        lineEPOCH="$(convDateString "${BASH_REMATCH[*]}")"
        if [ "$lineEPOCH" -gt "$inputEPOCH" ]; then
            echo "${BASH_REMATCH[@]}" is greater
        fi
    fi
done<"$errorCodeFilePath"

Тестирование вашего файла на рассматриваемом образце ввода как

$ bash script.sh "2018/07/16:12.36.00"
2018/07/16:12.36.02 is greater
2018/07/16:12.36.15 is greater

После всего сказанного вам следует подумать о прочтении Почему использование цикла оболочки для обработки текста считается плохой практикой? . Потому что обработка текста в оболочке медленная по сравнению с другими инструментами, предназначенными для специальной обработки файлов.

0
02.08.2020, 15:02
1 ответ

Изменение режима связывания на балансировку нагрузки -«устранило» проблему.

0
18.03.2021, 23:15

Теги

Похожие вопросы