在正在运行的进程的输出周围添加自定义字符串

问题描述 投票:0回答:1

我有一个“程序”,在运行时不断向 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” ”)

linux string bash dialog pipe
1个回答
0
投票

我会在

myprogram
Xdialog
之间的管道中放置一个变异程序:

myprogram | mutator | Xdialog ...

中它可能看起来像这样:

#!/bin/bash

while IFS= read -r line
do
    printf "XXX\n%s\nXXX" "$line"
done
© www.soinside.com 2019 - 2024. All rights reserved.