Почему одно и то же sed regex (после grep) выходит из строя при запуске в сценарии bash или командной строке bash?

Вот сценарий. Это успешно, когда я запускаю его из приглашения BASH , но не в скрипте. Есть идеи?


Когда я говорю «fail», я имею в виду, что sed regex ничего не соответствует, поэтому нет замененного текста. Когда я запускаю его в командной строке, он совпадает.

Кроме того, я мог бы ответить на это. Это связано с моим псевдонимом grep и GREP_OPTIONS имеющим странное взаимодействие. Я вернусь с подробностями о них.

 #!/bin/bash for ((x = 101; x <= 110; x++)); do urls="${urls} www$x.site.com/config" done; curl -s ${urls} | grep -i "Git Commit" | sed -r "s/.*Git Commit<\/td><td>([^<]+).*/\1/g" 

  • vim script: как изменить «put =» на append?
  • Сравнить 2 столбца в 2 разных файлах
  • Разделить файл на основе шаблона с ведущими нулями
  • Динамическая переменная в скрипте KornShell
  • Идеи для анализа результатов netstat для активных подключений
  • Скопировать файл из одной ZIP в другую?
  • Перезапустите локальный скрипт из URL-адреса, доступного исходному коду?
  • Своеобразное поведение grep / heading трубопроводов
  • One Solution collect form web for “Почему одно и то же sed regex (после grep) выходит из строя при запуске в сценарии bash или командной строке bash?”

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

    У меня был grep-псевдоним и GREP_OPTIONS . Это привело к тому, что подсветка цвета оставалась включенной в скрипт, даже когда соединение с другой командой. Это обычно не очень хорошо сочетается с sed .

    Вот мои .alias и параметры:

     alias grep='grep -i --color' export GREP_OPTIONS="--color=always" 

    Поэтому, когда вы запускаете скрипт, он не использует команду aliased и поэтому всегда включает цвет. Поэтому, когда я проверил свой псевдоним и увидел параметр --color (что означает auto , что означает «не выводить цвет, который передается по другой команде» (например, sed ).

    Я был в замешательстве, потому что забыл, что у меня также был установлен GREP_OPTIONS , поэтому я ожидал, что grep в скрипте будет иметь color установленный auto по умолчанию (как если бы я не установил глобальные GREP_OPTIONS ). Но не так.

    Вот мои новые настройки (я считаю, что флаг GREP_OPTIONS для GREP_OPTIONS избыточен, но я оставляю его там как напоминание):

     alias grep='grep --color=always' export GREP_OPTIONS="--ignore-case --color" 

    Таким образом, всякий раз, когда я нахожусь в командной строке, я буду выделять все мои greps (чего обычно хочу). Но в сценариях он по умолчанию будет окрашиваться только тогда, когда не будет передан в другую команду. Мне все равно придется добавлять –color = всегда ко многим моим сценариям (так как я предпочитаю выделять в большинстве случаев даже при подключении к другой команде, если только я не вижу выхода).

    Interesting Posts

    Почему procmail не запускается?

    Как достичь греческой раскладки клавиатуры

    Reaver продолжает повторять тот же вывод на Kali linux

    Может ли apt_preferences отслеживать приоритет пакета?

    Запустить терминатор в нужный каталог, а затем запустить нужную команду

    scp -3 больше не работает

    Резервное копирование или оснастка для ext4

    sftp от Unix-сервера до окна

    Как использовать одну и ту же библиотеку более одного раза в службе имен службы (NSS)

    Динамический zsh автозаполнение для пользовательских команд

    `cd` все экраны для PWD текущего экрана

    Shell Script: используйте «find» для запуска оболочки команду, содержащую «имя файла» (без расширения), возвращенную из «find»,

    Bash: Расширение истории внутри одинарных кавычек после двойной кавычки внутри одной строки

    Как дешифровать файлы ecryptfs?

    Как использовать разделитель полей и игнорировать строки в awk без трубопроводов?

    Linux и Unix - лучшая ОС в мире.