Как использовать AppleScript для определения времени выполнения программы

Я хотел бы использовать AppleScript для пакетного запуска нескольких программ и получения времени выполнения каждой из них.

Пример: в командной строке я бы набрал time ls следующим образом:

$ time ls
Applications 
bin
net
Library
... etc

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

но когда я пытаюсь использовать сценарий Apple и помещаю результаты в переменную, он полностью игнорирует вывод времени.

Пример:

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
Я знал из справочной страницы для time, что его вывод был записан в stderr, и я испробовал все формы перенаправления, какие только мог придумать, и не смог заставить их работать правильно. Теперь, увидев и попробовав ваш ответ, мне стало любопытно, как это работает. Очевидно, чтение вывода help exec, поскольку это builtin, дало мне ответ. Хорошее решение! +1 - person user3439894; 15.11.2017