Мне нужно выполнить несколько команд, и если какая-либо из них не удастся, я бы хотел вывести JSON с его stderr.

У меня есть следующая строка:

OUT="$( (ssh internal "custom_script1" | custom_app1 2>&- | custom_script2) 2>&1)"

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

Допустим, я не могу подключиться к ssh, поэтому я хочу напечатать только SSH stderr:

{
  "state": "failed",
  "reason": "Permission denied (publickey,password,keyboard-interactive)."
}

1 ответ1

0

если я правильно понял, просто избегайте глобального 2> 1.

$ OUT="$( (ssh internal "custom_script1" | cut -f 1 2>&- | cut -f 2 2>&1) )"
ssh: Could not resolve hostname internal: nodename nor servname provided, or not known
$ echo $OUT
$

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .