2017-08-11 41 views
1

我有一個bash腳本,讓我們說foo.sh,在這個小例子看起來是這樣的:傳遞多個命令腳本中調用時間

#!/bin/bash 
function __measure_time { 
    time "[email protected]" 
} 
__measure_time "$*" 

我想現在要做的是通過兩個命令來這個腳本應該是一個又一個地運行,我想測量時間。所以基本上我做的是這樣的:

./foo.sh bash -c "echo 'ss' && sleep 1" 

但是,這並不是我想要的方式。我沒有從回聲中得到'ss',睡眠基本上被忽略。有沒有辦法做到這一點?

+0

對我來說這個工作很好。 我對命令的唯一編輯是以'./'作爲前綴。 所以它會是'./foo.sh bash -c「echo ss && sleep 1」' –

+0

事實上,看起來我得到的腳本是比我想象的更復雜的一行。我完全忽略了在調用時間之前有一個函數調用。這不是我的,但我正在嘗試使用它。將添加代碼。 – FlyingTeller

+0

時間用於定時執行腳本而不是多個命令。也就是說,時間不會接受多於一個命令作爲參數。 –

回答

0

如果你想要的參數通過正確的,你需要調用__measure_time"[email protected]",不"$*"

#!/bin/bash 
__measure_time() { #why the `function` syntax when you can be POSIX? 
    time "[email protected]" 
} 
__measure_time "[email protected]" 

"$*"加入對$IFS的第一個字符的所有參數爲一個字符串。 "[email protected]"「給我所有的論據,就好像每個人都被單獨引用一樣」。

+0

謝謝。使用$ *與使用$ @相比有什麼優勢可以證明不能替代它? – FlyingTeller

+0

@FlyingTeller沒有 – PSkocik

相關問題