脚本输出与手动运行命令时的输出不同

脚本输出与手动运行命令时的输出不同

我对这些东西还很陌生,我一直在编写一个简单的 Perl 脚本,每隔几秒使用 Capture::Tiny 中的捕获功能轮询服务器的 iostat -k -x 数据

脚本可以运行,但是显示的数据被截断了。如果我正常执行 iostat -k -x,就不会发生这种情况

这只是在一分钟的时间内显示n次数据。

脚本代码、iostat -k -x 输出、使用poll脚本时的输出如下: http://pastebin.com/K1AnqskU

任何帮助,将不胜感激!

答案1

这里有一位哥们儿帮了 JP 一点忙。我们现在知道了。

Capture::Tiny 运行良好,并且反引号的功能与 Capture::Tiny 完全相同。

问题很简单,他在命令行中使用的破折号是unicode,所以shell简单地忽略了它们。:)

答案2

看来,您的脚本中的“-”字符有问题。
如果我将“iostat -k -x”从您的示例中复制粘贴到我的终端,它会产生截断的输出。如果我手动输入相同的内容,则输出是正确的。

PS 由于您忽略了 stderr 输出,因此您可以使用

$stdout = `iostat –k –x`;

相关内容