测量脚本执行时间时的各种语法错误

NoE*_*ert 2 linux shell bash debian time

使用 Cygwin (W10) 我历来用它来测量脚本中的执行时间:

#!/bin/sh

(time {
sleep 1;
})
Run Code Online (Sandbox Code Playgroud)

我现在已经转移到 Debian(Linux 的 Windows 子系统),同样的脚本给出了这个错误:

Syntax error: "}" unexpected (expecting ")")
Run Code Online (Sandbox Code Playgroud)



我也在这里尝试了两个建议的脚本:https : //askubuntu.com/a/431184但都失败了:

$ foo() {
    sleep 1;
    echo "Hello World"
  }
$ time foo
Hello World 
Run Code Online (Sandbox Code Playgroud)

$ foo() {
    sleep 1;
    echo "Hello World"
  }
$ export -f foo
$ echo foo | /usr/bin/time /bin/bash
Hello World
Run Code Online (Sandbox Code Playgroud)

具有相同的错误消息:

Syntax error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)


顺便说一下,我已经安装了/usr/bin/time.

有人可以帮忙吗?

谢谢

编辑:根据要求,脚本很简单:

#!/bin/bash

(time {
sleep 1;
})
Run Code Online (Sandbox Code Playgroud)

mur*_*uru 5

/bin/sh在 Cygwin 上可能是 bash 的符号链接,在 Debian 上它是破折号。在 bash 上,time是一个可以作用于 shell 命令行的关键字。Dash 没有等效项,time只有 external /usr/bin/time,并且与time关键字的作用不在同一级别,因此不能用于命令组。

/bin/bash如果您要使用关键字之类的 bashisms,请用于您的 shebang time