Пользовательские сценарии в /etc/profile.d и /etc/init.d - rhel6 и rhel7

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

  • Если вы хотите отбросить вывод A в любом случае:

    { A >/dev/null && B || C; } | D
    
  • Если вы хотите увидеть вывод A на терминале:

    { A >/dev/tty && B || C; } | D
    
  • Если вам нужен вывод A как вход последующей команды E, вам понадобится дополнительная группа команд и перенаправление потока:

    { { A >&3 && B || C; } | D; } 3>&1 | E
    

Если все это кажется вам слишком заумным (как и мне), я рекомендую использовать специальную переменную shell для статуса выхода A и работать с ней:

A
if [ $? -eq 0 ]; then
  B
else
  C
fi |
D

Если вы хотите быть более кратким, но не слишком заумным, я предлагаю следующее:

A; { [ $? -eq 0 ] && B || C; } | D

(См. также последнюю часть ответа hvd, которую я не заметил, когда писал свой первоначальный ответ)

.

1
22.05.2016, 14:17
0 ответов

Теги

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