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)
/bin/sh在 Cygwin 上可能是 bash 的符号链接,在 Debian 上它是破折号。在 bash 上,time是一个可以作用于 shell 命令行的关键字。Dash 没有等效项,time只有 external /usr/bin/time,并且与time关键字的作用不在同一级别,因此不能用于命令组。
/bin/bash如果您要使用关键字之类的 bashisms,请用于您的 shebang time。