【发布时间】:2014-12-02 19:25:47
【问题描述】:
我有一个 bash 脚本,我试图用它来编写无缓冲的输出。我有这样的事情:
...
mkfifo $PIPE
for SERVER in ${SERVERS[@]}; do
ssh $SERVER command >$PIPE &
done
while read LINE; do
echo ${LINE}
done <$PIPE
问题是脚本的所有输出都被缓冲了。
我知道我可以在整个脚本中使用stdbuf 或unbuffer 之类的东西,但我不希望我的用户每次都必须运行stdbuf -o0 -e0 my_command。
有没有办法在我的脚本中实现这种效果?
谢谢, 马克
【问题讨论】:
-
好吧,您当然可以始终让您的脚本在适当的环境中自行执行,而不让用户看到这些细节。不过,可能有更好的解决方案。
-
这里有个愚蠢的问题:
unbuffered在这里是什么意思?像 char 刷新的 stderr 一样?