我有一个“程序”,在运行时不断向 STDOUT 输出一些内容。
我想对 Xdialog 的输出进行一些更改。
Xdialog 使用 STDIN 来更改对话框本身中的文本。
为了做到这一点,我需要将任何输出/文本包装在“XXX 我想要的输出 XXX”
到目前为止我已经尝试过了,但我无法理解它。
首先我创建了一个 fifo 管道,如下所示:
mkfifo /tmp/mypipe
然后我可以用我想要的程序写入该管道
myprogram > /tmp/mypipe
要打开/读取管道,我可以使用这个:
(while true ; do cat /tmp/mypipe; done)
我知道这需要单独的会话或后台进程。
当读取被“终止”时,管道将关闭,程序也会关闭。
所以从技术上讲我可以像这样一起使用它:
(while true ; do cat /tmp/mypipe; done) | Xdialog --no-close --no-buttons --infobox "$RANDOM" 10 0 0
我知道如何将某个(后缀/附加)字符串添加到 Xdialog 的输出中,但我不知道如何添加前缀,例如“XXX “(回声-e” ”)
我会在
myprogram
和 Xdialog
之间的管道中放置一个变异程序:
myprogram | mutator | Xdialog ...
在 bash 中它可能看起来像这样:
#!/bin/bash
while IFS= read -r line
do
printf "XXX\n%s\nXXX" "$line"
done