2015-11-22 3 views
0

Данная программа A; Я пишу скрипт, который выполняет следующую команду;coreutils; Где программа `pipe`?

echo "Text-To-Be-Processed" | A | cat 

AA не имеет существенного значения для функциональности, но облегчает использование. У меня есть чек, чтобы определить, доступен ли A; Если это не так, я хотел бы заменить A на программу no-op (т. Е. Программу pipe (|)).

Такое, что моя команда становится;

echo "Text-To-Be-Processed" | pipe | cat 

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

Мое текущее решение: ./pipe.sh; if read -t 0; then cat; else echo "$*"; fi, что позволяет входить в раствор, но чувствует себя неправильно.

ПРИМЕЧАНИЕ: Замена A командой | as;

echo "Text-To-Be-Processed" | | | cat 

Не работает.

ответ

0

Возможно, tee to/dev/null. Как в:

echo "Text-To-Be-Processed" | tee /dev/null | cat 
+0

Я только что осознал главный недостаток моего первоначального поста; а именно, что я передаю аргументы 'A', которые нужно игнорировать' pipe'. Большинство программ отклоняются с ошибкой; 'invalid option'. – Skeen