Есть ли лучший способ фильтровать вывод git diff?

Проблема заключалась в неправильном имени хоста .

Этот ответ вместо этого фокусируется на том, как лучше написать код.

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

Вместо:

#!/bin/bash

key="keys/cash_prod_key"

ssh_args=( -o StrictHostKeyChecking=no -qni "$key" user@host )

if ssh "${ssh_args[@]}" cat /var/log/FILE_send.log |
   grep -F 'FILENAME' |
   grep -q -i -F 'success'
then
    echo 'Success'
fi

Это запустит только catна удаленном хосте, а затем запустит две команды grepлокально.

Я также добавил флаг -Fк командам grep, предполагая, что строки, используемые в качестве шаблонов, являются не регулярными выражениями, а буквальными строками, которые вы хотите найти. Последний grepиспользует -q, так как нас на самом деле не интересует просмотр вывода, а только то, содержит ли он строку successили нет.

Чтобы упростить чтение, я поместил аргументы, используемые с ssh, в массив, который позже буду использовать в вызове, а также сделал строки немного короче, просто вставив символы новой строки после вертикальной черты. символы. Скрипт по-прежнему синтаксически корректен. Также обратите внимание, что любое расширение переменной и т. д. всегда должно заключаться в двойные кавычки, если вы не знаете, в каких контекстах это не требуется .

Обратите внимание: я предполагаю, что команда sshвызывается правильным образом.

1
08.05.2020, 06:15
0 ответов

Теги

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