帮酷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  |  如果智培  |  酷兔英语