От новичка до гуру: Курсы программирования на CyberDuff

Сравните содержимое двух файлов

Я тестирую код bash и получаю ошибки, когда читаю последнюю строку файла и сравниваю ее с другой:

#!/bin/bash
NEW_EVENT_TAIL=`echo tail -1 new_events.txt`
EXISTING_EVENT_TAIL=`echo tail -1 new_events.txt`

if ["$NEW_EVENT_TAIL"="$EXISTING_EVENT_TAIL"];
then
    echo "in list"
else
    echo "not in list"
fi

Основываясь на этом коде и используя тот же файл, я ожидаю, что «в списке» будет напечатано. Вместо этого печатается «нет в списке». Сообщение, которое я получаю:

-bash: [tail -1 new_events.txt=tail -1 new_events.txt]: command not found
03.10.2017

  • Первая проблема заключается в том, что вам не хватает символа IFS (по умолчанию любой символ пробела) между [ и тем, что следует за ним, а также между ] и тем, что ему предшествует. Это приводит к тому, что bash анализирует все условие как единую команду, которую он, конечно же, не может найти. 03.10.2017
  • Кстати, переменные, которые вы определяете сами (в отличие от переменных, имеющих значение для операционной системы или оболочки), должны иметь по крайней мере один символ нижнего регистра. См. pubs.opengroup.org/onlinepubs/9699919799/basedefs/, четвертый абзац: Пространство имен переменных среды, содержащих строчные буквы, зарезервировано для приложений. Приложения могут определять любые переменные среды с именами из этого пространства имен без изменения поведения стандартных утилит. 03.10.2017

Ответы:


1

Просто удалите «эхо»:

tail -1 new_events.txt

и измените if следующим образом:

if [ "$NEW_EVENT_TAIL" = "$EXISTING_EVENT_TAIL" ];

Общий сценарий

NEW_EVENT_TAIL=`tail -1 new_events.txt`
EXISTING_EVENT_TAIL=`tail -1 new_events.txt`

if [ "$NEW_EVENT_TAIL" = "$EXISTING_EVENT_TAIL" ];
then
    echo "in list"
else
    echo "not in list"
fi
03.10.2017
  • если [$NEW_EVENT_TAIL = $EXISTING_EVENT_TAIL]; 03.10.2017
  • (Также см. раздел «Ответы на часто задаваемые вопросы» в разделе Как отвечать). 03.10.2017
  • мой плохой, я не поставил весь сценарий. я отредактировал ответ 03.10.2017
  • Многое улучшилось. Я бы посоветовал избегать имен переменных, написанных заглавными буквами, как это предлагается в соответствующем стандарте POSIX. и использование $() вместо обратных кавычек (в равной степени соответствует POSIX, но легче вкладывается и с меньшим количеством побочных эффектов для другого синтаксиса), но теперь в этом ответе нет ничего прямо неверного. 03.10.2017
  • Новые материалы

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

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

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..

    Как работает дистанционное парное программирование и почему оно может изменить вашу жизнь
    Серебряная пуля от одиночества и отвлекающих факторов во время обучения программированию Независимо от того, работаете ли вы или учитесь удаленно, велика вероятность, что одиночество и..