我曾经使用 Cygwin (W10) 来测量脚本内的执行时间:
#!/bin/sh
(time {
sleep 1;
})
我现在已经转移到 Debian(Linux 的 Windows 子系统),相同的脚本给出了这个错误:
Syntax error: "}" unexpected (expecting ")")
我还在这里尝试了两个建议的脚本:https://askubuntu.com/a/431184但都失败了:
$ foo() {
sleep 1;
echo "Hello World"
}
$ time foo
Hello World
和
$ foo() {
sleep 1;
echo "Hello World"
}
$ export -f foo
$ echo foo | /usr/bin/time /bin/bash
Hello World
具有相同的错误消息:
Syntax error: "(" unexpected
顺便说一句,我已经安装了/usr/bin/time
。
有人可以帮忙吗?
谢谢
编辑:根据要求,脚本很简单:
#!/bin/bash
(time {
sleep 1;
})
答案1
/bin/sh
在 Cygwin 上可能是 bash 的符号链接,在 Debian 上它是破折号。在 bash 上,time
是一个可以作用于 shell 命令行的关键字。 Dash 没有等效项,只有time
external /usr/bin/time
,并且它的作用与关键字不在同一级别time
,因此它不能在命令组上使用。
/bin/bash
如果您要使用像关键字这样的 bashisms,请用于您的 shebang time
。