如何将Perl与Whiptail仪表一起使用?



我可以通过Whiptail跟踪rsync进度,使用Awk来解析rsync输出,但是,我对为什么Perl对应项不起作用感到困惑(Whiptail仪表停留在0(。

这是有效的 Awk 命令行:

rsync --info=progress2 --no-inc-recursive --human-readable <source> <destination> |
stdbuf -o0 awk -v RS='r' '$2 ~ /%$/ { print substr($2, 0, length($2) - 1) }' |
whiptail --gauge Syncing 20 80 0

这是Perl(我假设(等价物:

rsync --info=progress2 --no-inc-recursive --human-readable <source> <destination> |
stdbuf -o0 perl -lne 'BEGIN { $/ = "r" } print /(d+)%/' |
whiptail --gauge Syncing 20 80 0

如果我从 Perl 版本中删除 Whiptail 命令,百分比数字将按预期打印。

我需要如何修改 Perl 版本?

您可能正在遭受缓冲。尝试在标准输出上设置自动刷新。

BEGIN { $/ = "r"; $|++ }

或者如果 Perl 至少是 5.14 版本,或者通过添加-MIO::Handle开关,你可以更明确:

BEGIN { $/ = "r"; *STDOUT->autoflush }

相关内容

  • 没有找到相关文章

最新更新