我已經使用時間命令,如下所示來執行程序(如「XXX $時間./a.out」),具有輸出,把「時間./a.out」的輸出到可變
real 0m7.250s
usr 0m10.395s
sys 0m0.026s
我想得到的是0和7.250,如0m7.250s。我嘗試過「awk」{print $ 2}'「,但沒有成功;沒有輸出。
PS:我試過把時間命令的輸出通過使用「>」輸出到文件,也沒有成功。
我已經使用時間命令,如下所示來執行程序(如「XXX $時間./a.out」),具有輸出,把「時間./a.out」的輸出到可變
real 0m7.250s
usr 0m10.395s
sys 0m0.026s
我想得到的是0和7.250,如0m7.250s。我嘗試過「awk」{print $ 2}'「,但沒有成功;沒有輸出。
PS:我試過把時間命令的輸出通過使用「>」輸出到文件,也沒有成功。
嘗試:
pax$ tm=$((time sleep 1) 2>&1 | awk '/^real/{print $2}') ; echo $tm
0m1.002s
(當然代替你自己的a.out
命令,sleep 1
只是使用的例子)。
它創建用於time
命令子外殼,並確保其標準誤差被髮送到標準輸出,而不是(time
具體輸出其信息以標準錯誤,使得它保持與它的定時程序的正常輸出分開)。
awk
命令捕獲行real
並輸出第二個參數(時間)。
time
命令將其輸出發送到標準錯誤,以免干擾正常的程序輸出。您將希望使用2>&1
將其重定向到可以捕獲的地方。
您也可以設置TIMEFORMAT環境變量以避免需要使用awk進行解析。 '((TIMEFORMAT =%R;時間睡眠1)2>&1)' – Sorpigal