Как да използвам AppleScript за време за изпълнение на програмата

Бих искал да използвам AppleScript за групово изпълнение на куп програми и да получа времето за изпълнение на всяка от тях.

Пример: От командния ред бих написал time ls така:

$ time ls
Applications 
bin
net
Library
... etc

real    0m0.013s
user    0m0.002s
sys     0m0.006s

но когато се опитам да използвам ябълков скрипт и да поставя резултатите в променлива, той напълно игнорира изхода за време.

Пример:

set result to do shell script "time ls"

се завръща

Applications 
bin
net
Library
... etc

без никъде да се споменава времето за изпълнение на времето.

Дори да направим това по-просто:

set result to do shell script "time"

се завръща

""

Как да върна времето на изпълнение от AppleScript?

p.s. Всъщност не се опитвам да измервам времето на ls. Искам да измервам времето на куп персонализирани програми, но ls дава прост пример.


person Timothy Vann    schedule 15.11.2017    source източник


Отговори (1)


Използвайте командата exec 2>&1, за да пренасочите STDERR към STDOUT, както следва:

do shell script "exec 2>&1; time  ls"
person jackjr300    schedule 15.11.2017
comment
Знаех от man страницата за time, че изходът му е написан на stderr и опитах всяка форма на пренасочване, за която се сетих, и не успях да го накарам да работи правилно. След като видях и изпробвах вашия отговор, бях любопитен как работи това. Очевидно четенето на изхода на help exec, тъй като това е builtin, ми даде отговора. Хубаво решение! +1 - person user3439894; 15.11.2017