Как проанализировать сохраненный вывод в переменной, сохранить результат и запустить другой скрипт на основе результата - PullRequest
0 голосов
/ 07 января 2019

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

Я хочу сохранить выходные данные команды в $ OUTPUT, но не могу разобрать и получить необходимые строки для запуска дополнительного сценария.

OUTPUT="$(script.php $HOST $PARAMETER)"

Попробовал простое утверждение if ниже, но у меня уже не получается:

RESULT=$(grep "TEST" $OUTPUT)
if [ $? -eq 0 ]; then
    printf '%s\n' "$RESULT"
else
    printf '%s\n' "No Match"
fi

Это то, что я получаю, где '-p' - это $ PARAMETER при выполнении скрипта:

grep: invalid option -- 'p'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

Где я получаю правильный вывод:

printf '%s\n' "$OUTPUT"

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Самый простой способ избежать этой ошибки и не обрабатывать строки типа -p в качестве параметров - переписать строку grep следующим образом:

RESULT=$(grep -- "TEST" $OUTPUT)

Двойная черта сообщает grep, что это конец параметра, а все остальное - как данные

0 голосов
/ 07 января 2019

Проблема в том, что значение $OUTPUT интерпретируется как параметры командной строки оболочки в этой строке:

RESULT=$(grep "TEST" $OUTPUT) 

попробовать:

RESULT=$(echo "$OUTPUT" | grep "TEST")
...