ZSH:如何计算一段代码?

时间:2011-07-14 12:58:58

标签: bash zsh

在bash中,我能够编写包含以下内容的脚本:

{ time {

#series of commands
echo "something"
echo "another command"
echo "blah blah blah"

} } 2> $LOGFILE

在ZSH中,等效代码不起作用,我无法弄清楚如何使它适合我。这段代码有效,但我不知道如何让它包装多个命令。

{ time echo "something" } 2>&1

我知道我可以创建一个新脚本并将命令放在那里,然后正确执行,但有没有办法使用函数或类似的方法来执行上面的bash?

4 个答案:

答案 0 :(得分:29)

请尝试以下方法:

{ time ( echo hello ; sleep 10s;  echo hola ; ) } 2>&1 

答案 1 :(得分:13)

如果您想对自己的代码进行分析,可以选择以下几种方法:

  • 时间子shell执行如:

    time ( commands ... )

  • 使用REPORTTIME检查慢速命令:

    export REPORTTIME=3 # display commands with execution time >= 3 seconds

  • setop xtrace正如here

  • 所述
  • zprof模块

答案 2 :(得分:2)

尝试替换{with(? 我认为这应该有帮助

答案 3 :(得分:1)

您还可以将times POSIX shell内置与函数结合使用。 它将报告shell及其子级使用的用户和系统时间。看到 http://pubs.opengroup.org/onlinepubs/009695399/utilities/times.html

示例:

somefunc() {
    code you want to time here
    times
}

使用shell函数的原因是它创建了一个新的shell上下文,在其开始时times全为零(尝试它)。否则结果也包含当前shell的贡献。如果这是您想要的,请忘记该功能并将times放在脚本的最后。