2017-03-08 34 views
1

我想指定時間的格式,但它的行爲differenty:時間測量的如何調用具有參數和相同行爲的不帶參數的時間命令?

  • 在第一種情況:

    $ time echo hehe | sleep 1   
    
    real 0m1.03s 
    user 0m0.00s 
    sys  0m0.00s 
    
    $ time -p echo hehe | sleep 1  
    
    real 0.00 
    user 0.00 
    sys 0.00 
    

    所以,如果我提供任何開關的時候,它會表現不同整個commnad的時間(含管道)在第二種情況下

  • 它僅測量回波的時間

如何指定-p並獲得RESU從第一次運行?

+0

爲什麼你必須將'echo'的輸出管道化爲時間?你的意思是一個接一個地運行嗎? – Inian

+0

我有一個更有意義的任務要做,但這個例子顯示了我的問題與時間命令。 – torbatamas

回答

2

你不行。在ksh中,time可以通過一個管道,而time -p只能通過第一階段。

  • POSIX time在管道上是未定義的。 ksh的實施選擇對整個管道進行計時。
  • ksh time不支持-p或任何其他標誌,並且將委託給外部time如果它被任何標誌調用。
  • 外部time(例如/usr/bin/time)只能在管道的第一階段運行(因爲管道是殼結構並需要殼協作)。

要麼切換到確實允許此(如bash)的殼,或重寫的東西,外部time可以工作,如與sh -c單一階段在內部運行的管道:

time -p sh -c 'echo hehe | sleep 1' 
相關問題