我有一个"程序",当STDOUT运行时,它不断地向STDOUT输出一些东西.

我想对XDIALOG的输出做一些更改.

XDialog使用STDIN来更改对话框本身中的文本.

为此,我需要将所有输出/文本换行到"XXX\nMydesiredOutput\nXXX\n"之间

我到目前为止都试过了,但我就是想不通.

首先,我创建一个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

我知道如何将某个(后缀/追加)字符串添加到输出to X对话框中,但我不知道如何添加前缀,如"XXX\n"(ECHO-e"\n")

推荐答案

我会在myprogramXdialog之间设置一个变异程序:

myprogram | mutator | Xdialog ...

It could look like this in :

#!/bin/bash
#
# mutator

while IFS= read -r line
do
    printf "XXX\n%s\nXXX\n" "$line"
done

With :

perl -pe 's/.*/XXX\n$&\nXXX/'

With :

sed 's/.*/XXX\n&\nXXX/'

Linux相关问答推荐

为什么我们不能使用${$#}来获取传递给shell 脚本的最后一个参数?

在新环境中使用Unicode范围的sed表达式有问题

并行函数的最后一个实例的状态

在linux中,我想将昨天的文件与今天的文件进行比较,仅将今天的更改作为输出,忽略一些字段

使用 YASM 程序集时如何更改 64 位 Linux 中的终端 colored颜色 ?

在不编写任何代码的情况下,是否有一个命令可以检索当前 shell 的亲和力中的可用内核数?

erlang 格式的 utf8 变为 \x(反斜杠 x)ascii 编码

如何为命令的所有选项启用无密码 sudo?

在 SLURM 作业(job)脚本中设置和传递字符串变量

sig_atomic_t 实际上是如何工作的?

php.ini 更改,但在 Ubuntu 上无效

为什么 JVM 报告的已提交内存比 linux 进程驻留集大小更多?

Linux内核列表中的WRITE_ONCE

Linux 配置/制作,--prefix?

判断 VT-x 是否已激活而无需在 Linux 中重新启动?

*nix 系统上是否有与 COM 等效的功能?如果不是,那么 *nix 的可重用性方法是什么?

为什么两次使用 grep 时没有显示输出?

在 Ubuntu 中学习 OpenGL

如何让 cron 每N分钟运行一次,其中 n % 5 == 1?

Python日志(log)记录 - 判断日志(log)文件的位置?