シェル関数を定義します(clockこれをと呼びましょう)。これは、time関数と同様に、別のコマンドのラッパーとして使用したいものですclock ls -R。
私のシェル関数はいくつかのタスクを実行してから終了しexec "$@"ます。
この関数をシェルのビルトインでも機能させたいのです。たとえば、実行可能ファイルではなく、ビルトインclock time ls -Rの結果を出力する必要がtimeあり/usr/bin/timeます。しかし、exec常に代わりにコマンドを実行することになります。
Bash関数を引数としてシェル組み込みを受け入れるラッパーとして機能させるにはどうすればよいですか?
編集:これtimeはBashの組み込みではなく、パイプラインに関連する特別な予約語であることを学びました。で動作しない場合でも、組み込みのソリューションに関心がありますtimeが、より一般的なソリューションの方が優れています。
exec bash -c \' "$@" \'ます。最初のパラメーターのコマンドがシェルスクリプトとして認識されない限り、直接実行されるバイナリとして解釈されます。代わりに、もっと簡単に言えば、を外して元のシェルからexec呼び出すだけ"@"です。