s=$({ time dd ... > /dev/null;} 2>&1)
Chepners的答案给了我更好的灵感:
s=$(exec 2>&1; time dd ... > /dev/null)
$()已经是子sHell,因此无需创建额外的子sHell.把exec 2>& 1;在命令重定向整个子sHell的stdout之前,在命令之后放置它会使它成为命令的一部分,因此仅应用于传递给时间的命令.省略exec和分号将尝试执行内置的系统时间二进制intead,如果不存在则输出错误.省略exec但保留分号将不起作用,因为只会导致重新定向新的分叉进程,并且内置时间不会是新进程.
哦,顺便说一下,> / dev / null不会将时间本身的输出转储到/ dev / null,因为它也是时间执行的命令的一部分,并且不会应用于时间本身.
以上是大佬教程为你收集整理的linux – 如何捕获几个命令的输出?全部内容,希望文章能够帮你解决linux – 如何捕获几个命令的输出?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。