Я пытаюсь перенаправить стандартный ввод в FIFO с помощью bash. Таким образом, я смогу использовать этот стандартный ввод в другой части скрипта.
Однако, похоже, это не работает так, как я хочу
script.bash
#!/bin/bash
rm /tmp/in -f
mkfifo /tmp/in
cat >/tmp/in &
# I want to be able to reuse /tmp/in from an other process, for example :
xfce4-terminal --hide-menubar --title myotherterm --fullscreen -x bash -i -c "less /tmp/in"
Здесь я ожидал бы, что когда я запускаю ls | ./script.bash
, увижу вывод ls, но он не работает (например, скрипт завершает работу, ничего не выводя)
Что я неправильно понимаю?
cat
передается/dev/stdin
в качестве аргумента, это относится к стандартному вводуcat
, а не к вашей оболочке (по крайней мере, так кажется в моей системе Linux).cat
без аргументов копирует свой стандартный ввод в стандартный вывод, а с/dev/stdin
в качестве единственного аргумента делает то же самое. Я подозреваю, что это не то, что вы хотите. - person Fred   schedule 27.01.2017