我有一个这样的脚本,
#!/bin/bash
echo "hello" > a.txt
while [ True ]; do
#do something here, very long and possiblely causing system reboot
done
如果执行正常结束,我似乎只能得到一个正常的 a.txt(里面有“hello”)。如果“while 循环”正在运行或在 while 循环期间触发了系统重新启动,则会有一个空白的 a.txt。
通过谷歌搜索,这似乎是一个行缓冲问题,因为 shell 默认打开行缓冲。由于我定制的 Ubuntu 上没有安装“Expect”或“stdbuf”,我尝试替换
echo "hello" > a.txt
使用 Perl/C 程序,其中行缓冲区被禁用。在 Perl 中,我使用了 "$|" 并且在 C 中使用了“fflush”。不幸的是,它不起作用。
任何反馈表示赞赏...