Ответ 1
Попробуйте вместо этого:
{ time ( echo hello ; sleep 10s; echo hola ; ) } 2>&1
В bash я могу написать script, который содержит что-то вроде этого:
{ time {
#series of commands
echo "something"
echo "another command"
echo "blah blah blah"
} } 2> $LOGFILE
В ZSH эквивалентный код не работает, и я не могу понять, как заставить его работать для меня. Этот код работает, но я точно не знаю, как заставить его обернуть несколько команд.
{ time echo "something" } 2>&1
Я знаю, что могу создать новый script и поместить туда команды, а затем выполнить его правильно, но есть ли способ сделать это либо с помощью функций, либо с помощью аналогичного метода с bash выше?
Попробуйте вместо этого:
{ time ( echo hello ; sleep 10s; echo hola ; ) } 2>&1
Если вы хотите просмотреть свой код, у вас есть несколько альтернатив:
Попробуйте заменить {с помощью (? Я думаю, что это должно помочь
Вы также можете использовать встроенную оболочку times
POSIX в сочетании с функциями.
Он будет сообщать пользователю и системному времени, используемому оболочкой и ее дочерними элементами. Видеть
http://pubs.opengroup.org/onlinepubs/009695399/utilities/times.html
Пример:
somefunc() {
code you want to time here
times
}
Причина использования функции оболочки заключается в том, что она создает новый контекст оболочки, в начале которого times
- все нули (попробуйте). В противном случае результат также содержит вклад текущей оболочки. Если это то, что вы хотите, забудьте о функции и поместите times
последним в свой script.