Как передать вывод одного эха на вход другого?

Я пытаюсь следующее

echo 5 | echo

но ничего не получите. Что случилось?

1 ответ

Решение

Такие команды как grep а также awk может принимать стандартный ввод (STDIN) в качестве параметра или аргумента, используя канал. Тем не менее, другие, такие как cp а также echo игнорировать стандартный поток ввода и полагаться исключительно на аргументы, найденные после команды.

Используя команду xargs вы можете создавать и выполнять командные строки из стандартного ввода, например, в вашем случае:

echo 5 | xargs echo

Не существует точного правила, чтобы узнать, принимает ли команда стандартный ввод, однако вы можете иметь небольшое представление, используя эти два правила:

  • Если команда используется для манипулирования содержимым файла (grep, sed, awk и т. д.), то обычно он может принимать данные от STDIN.

  • Если команда используется для манипулирования самим файлом (например, mv, rm, cp) или процесс (например, kill, lsof) или вернуть информацию о чем-либо (например, top, find, ps) тогда это не так.

Другие вопросы по тегам