Bash 从可执行文件读取并写回响应

Bash 从可执行文件读取并写回响应,bash,stdout,stdin,Bash,Stdout,Stdin,我正在用启动一个可执行文件 ./test 然后它将向stdout写入一个文本 static test: DYNAMIC_VAL 静态测试始终相同,但值动态值发生变化。 我需要读取DYNAMIC\u VAL,根据DYNAMIC\u VAL,对其进行处理并将字节十六进制代码\x12\x34\x56发送回stdin /test是一个可执行文件,stdin应该在原始调用test时执行,否则动态值会随着新调用而改变 在bash中是否有一种简单的方法可以做到这一点?如果我正确理解了这个问题,您希望从/t

我正在用启动一个可执行文件

./test
然后它将向stdout写入一个文本

static test: DYNAMIC_VAL
静态测试
始终相同,但值
动态值
发生变化。 我需要读取
DYNAMIC\u VAL
,根据
DYNAMIC\u VAL
,对其进行处理并将字节十六进制代码
\x12\x34\x56
发送回stdin

/test
是一个可执行文件,stdin应该在原始调用
test
时执行,否则
动态值会随着新调用而改变


bash
中是否有一种简单的方法可以做到这一点?

如果我正确理解了这个问题,您希望从
/test
进程中读取一行数据,然后将数据写回同一进程并重复,直到它生成某个表示它已经完成(或永远完成)的内容

一种方法是使用

例如:

$ cat test.sh
#!/bin/sh

echo "static test: foo"
read line
echo "static test: bar"
read line
echo "static test: done"

$ cat demo.sh
#!/usr/bin/env bash

coproc ./test.sh
while true; do
    read -r -u "${COPROC[0]}" s t dynamic_val
    case "$dynamic_val" in
        "done")
            echo "Exiting"
            break;;
        *)
            echo "read $dynamic_val"
            printf "\x12\x34\x56\n" >&"${COPROC[1]}";;
    esac
done

$ ./demo.sh
read foo
read bar
Exiting

测试的标准?你试过什么?您知道如何在bash中读取命令的输出吗?您知道如何将“十六进制代码”发送回“标准输入”吗?@OznOg yes发送回的标准输入test@KamilCuk我知道我通常可以使用
echo-e“\x12\x34\x45”|/test来传输十六进制代码“
但在我的情况下,我必须先读取输出。您是希望将stdout作为stdin提供给
test
的相同调用,还是希望在每次处理一组新的“字节十六进制代码”时调用
test
的新副本?什么是
测试
?二进制文件?shell脚本?如果是shell脚本(或者您有二进制代码的源代码),那么您可以在
test
中进行编辑以执行额外的处理吗?(试图更好地了解需求和可用选项)