Почему одно и то же 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" 

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 = всегда ко многим моим сценариям (так как я предпочитаю выделять в большинстве случаев даже при подключении к другой команде, если только я не вижу выхода).

  • Почему ssh -nq -t не может видеть переменную окружения?
  • Скрипт для вставки строки в файлы в поддиректории
  • удалять строки из выходного файла из diff
  • Не удается войти в систему после запуска автозапуска службы при запуске
  • Удалите строку, используя определенные значения (-)
  • Взаимодействие с запущенной интерактивной консольной программой из другого процесса
  • Является родителем оболочки всех процессов в Linux
  • Фильтрация вывода журнала на отдельных линиях
  • Возможно ли выполнить сценарий VIM в неинтерактивном режиме?
  • vim auto complete custom list
  • Как вы скрываете пароль при вызове во время команды su?
  • Linux и Unix - лучшая ОС в мире.