スクリプト実行時間を測定するときにさまざまな構文エラーが発生する

スクリプト実行時間を測定するときにさまざまな構文エラーが発生する

Cygwin(W10)を使用してスクリプト内の実行時間を測定しました。

#!/bin/sh

(time {
sleep 1;
})

これでDebian(Linux用のWindowsサブシステム)に移動しましたが、同じスクリプトで次のエラーが発生します。

Syntax error: "}" unexpected (expecting ")")



また、ここで提案された2つのスクリプトを試しました。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/shCygwinではbashへのシンボリックリンクかもしれませんが、Debianではdashです。 Bashでtimeシェルコマンドラインに適用できるキーワード。 Dash には対応するものはなく、timeexternal だけで、/usr/bin/timeキーワードと同じレベルでは機能しないため、コマンドグループではtime使用できません。

/bin/bashキーワードなどのbashismを使用するには、shebangで使用してくださいtime

関連情報