帮酷LOGO
0 0 评论


问题:

为了交付,我们需要将程序的完整输出打印到txt文件。 还需要执行命令"time"来打印脚本的执行时间。

#!/bin/bash
time./blur-effect 4k.png 4k_out16.png 16 15 &>> Output.txt 

我遇到的问题是程序的输出可以正确地输出到txt文件,但执行时间的却终端中显示,但它必须也要打印在txt文件中,提前感谢任何的提示或帮助。


回答 1:

如果你将命令包装在命令组或subshell中,则应该可以按照你想要的方式工作:

{ time./blur-effect 4k.png 4k_out16.png 16 15 ; } &>> Output.txt 

或者

(time./blur-effect 4k.png 4k_out16.png 16 15) &>> Output.txt 

请参见文件中 time写入输出,为什么需要括号


回答 2:

在Bash中 time 是管道的 shell 关键字它解释流重定向仅在定时命令上发生; 它也恰好是一个常见的 *nix 实用程序:

$ type -a time
time is a shell keyword
time is/usr/bin/time

如果要将流重定向到 time 或从 time 重定向,可以使用命令组或sub-shell如 steeldriver 的回答中所述,或者明确调用 time(1) 实用程序:

/usr/bin/time COMMAND... &> LOGFILE

或者,如果你不确定 time的完整路径

time="$(which time)"
"$time" COMMAND... &> LOGFILE

P.S. 你可以将 time(1) 命令的输出保存到未连接到命令错误输出(这是默认的)标准的文件,以防你希望保留使用 -o 选项不改变的程序错误输出的定时标准 。 -a 使 time 附加到该文件,而不是覆盖它。

/usr/bin/time [-a] -o/path/to/time.log COMMAND...>/path/to/command-stdout.log 2>/path/to/command-stderr.log




Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语