如何在stash中将stdout重定向到父脚本?

时间:2014-09-18 14:04:49

标签: bash shell

我有:

ScriptA。 sh 调用scriptB。 sh 调用ScriptC。 py

ScriptA等待ScriptB等待ScriptC重播成功。

如果他的操作没有成功(常规输出),python每3分钟返回一个字符串。

这些输出被聚合到ScriptB的缓冲区中。我想将它们动态地重定向到ScriptA的日志。

有可能吗?

2 个答案:

答案 0 :(得分:2)

我会使用tee

  

tee - 从标准输入读取并写入标准输出和文件

例如,在ScriptB.sh中:

while read someLine; do
    ...
done < <( ScriptC.py | tee -a logfileOfScriptA )

我不知道您是如何调用脚本的,但这是tee的用途。

已编辑 - 我想@Charles Duffy会说这样的话,如果你想得到幻想:

$ cat ScriptA.sh 
#!/bin/bash

LOGFILE=ScriptA.out

exec 5>>$LOGFILE

./ScriptB.sh
$ cat ScriptB.sh 
#!/bin/bash

echo 'Hello, world!' | tee >(cat - >&5)
$ ./ScriptA.sh 
Hello, world!
$ cat ScriptA.out 
Hello, world!

答案 1 :(得分:0)

Tx获得所有帮助!

我通过安装:“yum install expect”解决了这个问题,其中ScriptB正在运行(不是同一台服务器),然后实现以下内容:

ScriptA{

unbuffer /path/to/ScriptB

}