Элемент массива сценария Bash не может выступать в качестве имени файла для nano, какой-то ошибки кодирования

Можно использовать grepдля получения вывода нужного процесса
awkвторой столбец и testесли он нулевой
затем echoсообщение, которое вы хотите mailили mailxс нужной темой и адресами.
Вы можете перебирать несколько предопределенных строк

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

for CHECK in $(awk '{print $1}' output.txt | grep count=| cut -d"=" -f1)
do
if [ $(grep $CHECK output.txt | awk '{print $2}') -ne 0 ]
then  
echo "$(grep $CHECK output.txt")" | mailx -s "CHECK ABC PROCESS" foo@bar.com
fi
done
0
03.12.2019, 23:30
2 ответа

Проблема возникает из-за использования grep --color=alwaysв качестве первой команды.

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

Итак, ./^[[35m^[[Kapp.vue^[[m^[[K^[[36m^[[Kна самом деле сообщает bash, что «эта строка содержит текст app.vue с фиолетовой окраской текста». Нано, однако, дальтоник.

Если вы хотите, вы можете попытаться удалить эти цветовые индикаторы из строки, используя обычные процедуры регулярных выражений.

В моем случае мне посчастливилось просто сказать grep --color=neverвместо --color=always. С этим проблема ушла.

1
28.01.2020, 02:38

Это раскрашивающие строки. :^[ — ESC, [..m — цвет переднего плана и т. д. для вашего терминала.

Задать grep --color=never

2
28.01.2020, 02:38

Теги

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