【发布时间】:2021-10-18 02:07:40
【问题描述】:
我正在尝试在 unix-socket 连接的另一端运行脚本。为此,我尝试使用socat。脚本是
#!/bin/bash
read MESSAGE1
echo "PID: $$"
echo "$MESSAGE1"
sleep 2
read MESSAGE2
echo "$MESSAGE2" 1>&2
作为 socat 的听众,我有
socat unix-listen:my_socket,fork exec:./getmsg.sh,stderr
作为我使用的客户:
echo $'message 1\nmessage 2\n' | socat -,ignoreeof unix:my_socket 2> stderr.txt
我得到了输出
PID: 57248
message 1
message 2
而文件stderr.txt 是空的。
然而我的期望是这样的
- 来自侦听器端脚本的标准输出将通过管道传输到客户端上的标准输出,然后
- 侦听器端的stderr 到客户端的stderr。
即文件stderr.txt 应该有内容message 2 而不是空的。
关于如何实现 stdout 和 stderr 单独传输而不是合并的任何想法?
谢谢
【问题讨论】:
标签: bash sockets stdout stderr socat