如何控制 bash 脚本中管道的缓冲?

Rum*_*mca 6 shell bash buffer shebang

我需要执行我的脚本,stdbuf -i0 -o0 -e0否则用户会想知道为什么没有输出(因为管道缓冲区)。我怎样才能实现它?

#!/usr/bin/stdbuf -i0 -o0 -e0 /bin/bash
Run Code Online (Sandbox Code Playgroud)

结果是

/usr/bin/stdbuf: invalid mode ‘0 -o0 -e0 /bin/bash’
Run Code Online (Sandbox Code Playgroud)

Hau*_*ing 8

通常不需要对整个脚本进行缓冲。这仅对某些程序是必需的。

但是如果你想这样做,你可以简单地从它本身调用脚本:

#! /bin/bash

if [ yes != "$STDBUF" ]; then
    STDBUF=yes /usr/bin/stdbuf -i0 -o0 -e0 "$0"
    exit $?
fi
Run Code Online (Sandbox Code Playgroud)