无缓冲的 Bash 输出

2024-02-12

我有一个 bash 脚本,我试图用它来编写无缓冲的输出。我有这样的事情:

...
mkfifo $PIPE
for SERVER in ${SERVERS[@]}; do
    ssh $SERVER command >$PIPE &
done

while read LINE; do
    echo ${LINE}
done <$PIPE

问题是脚本的所有输出都被缓冲。

我知道我可以使用类似的东西stdbuf or unbuffer整个脚本,但我不希望我的用户必须运行stdbuf -o0 -e0 my_command每次。

有没有办法在我的脚本中达到这种效果?

谢谢, 马克


为什么不创建一个别名来运行stdbuf,这又会取消缓冲脚本输出?

我知道您不希望用户手动输入命令stdbuf。为什么不让用户创建一个将执行的别名stdbuf运行脚本?

alias my_script='stdbuf -o0 -e0 <path_to_script>'

现在用户可以从终端运行脚本(终端也可以帮助填写脚本名称),如下所示:

my_script
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无缓冲的 Bash 输出 的相关文章

随机推荐