我有一个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
。
有没有办法在我的脚本中实现这种效果?
谢谢, 马克
答案 0 :(得分:0)
为什么不创建一个别名来运行stdbuf
,这又会使脚本输出解除缓冲?
我知道您不希望用户使用stdbuf
手动输入命令。为什么不让用户创建一个执行stdbuf
运行脚本的别名?
alias my_script='stdbuf -o0 -e0 <path_to_script>'
现在用户可以从终端运行脚本(终端也可以帮助填写脚本名称),如下所示:
my_script
答案 1 :(得分:0)
在脚本上使用stdbuf
无济于事;它不适用于脚本中的所有命令。
stdbuf
的正确位置是生成输出的命令,i。即
ssh $SERVER stdbuf -o0 -e0 command >$PIPE &