Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 无缓冲Bash输出_Linux_Bash - Fatal编程技术网

Linux 无缓冲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

我有一个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&
完成
读行时;做
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 &