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