Linux 无缓冲Bash输出
我有一个bash脚本,我正试图用它编写无缓冲输出。我有这样的想法:Linux 无缓冲Bash输出,linux,bash,Linux,Bash,我有一个bash脚本,我正试图用它编写无缓冲输出。我有这样的想法: ... mkfifo $PIPE for SERVER in ${SERVERS[@]}; do ssh $SERVER command >$PIPE & done while read LINE; do echo ${LINE} done <$PIPE 。。。 mkfifo$管道 对于${SERVERS[@]}中的服务器;做 ssh$SERVER命令>$PIPE& 完成 读行时;做 ec
...
mkfifo $PIPE
for SERVER in ${SERVERS[@]}; do
ssh $SERVER command >$PIPE &
done
while read LINE; do
echo ${LINE}
done <$PIPE
。。。
mkfifo$管道
对于${SERVERS[@]}中的服务器;做
ssh$SERVER命令>$PIPE&
完成
读行时;做
echo${LINE}
完成为什么不创建一个别名来运行stdbuf
,这将反过来解除脚本输出的缓冲
我知道您不希望用户使用stdbuf
手动输入命令。为什么不让用户创建一个别名来执行运行脚本的stdbuf
alias my_script='stdbuf -o0 -e0 <path_to_script>'
在脚本上使用stdbuf
不会有帮助;它不会应用于脚本中的所有命令
stdbuf的正确位置是生成输出的命令,即。e
ssh $SERVER stdbuf -o0 -e0 command >$PIPE &
当然,您可以始终让脚本在适当的环境中自行执行,从而对用户隐藏此细节。不过,也许有更好的解决办法。这里有一个愚蠢的问题:无缓冲的在这里意味着什么?就像被char刷新的stderr?这能回答你的问题吗?
ssh $SERVER stdbuf -o0 -e0 command >$PIPE &