Saya mendefinisikan fungsi shell (sebut saja clock
), yang ingin saya gunakan sebagai pembungkus untuk perintah lain, mirip dengan time
fungsi, misalnya clock ls -R
.
Fungsi shell saya melakukan beberapa tugas dan kemudian diakhiri dengan exec "$@"
.
Saya ingin fungsi ini berfungsi bahkan dengan built-in shell, mis. clock time ls -R
Harus menampilkan hasil dari time
built-in, dan tidak /usr/bin/time
dapat dieksekusi. Tapi exec
selalu berakhir menjalankan perintah saja.
Bagaimana saya bisa membuat fungsi Bash saya berfungsi sebagai pembungkus yang juga menerima shell built-in sebagai argumen?
Sunting : Saya baru tahu bahwa time
itu bukan Bash built-in, tetapi kata khusus yang dicadangkan terkait dengan saluran pipa. Saya masih tertarik dengan solusi untuk built-in walaupun tidak bekerja time
, tetapi solusi yang lebih umum akan lebih baik.
exec bash -c \' "$@" \'
. Kecuali jika perintah Anda pada parameter pertama dikenali sebagai skrip shell, maka itu akan ditafsirkan sebagai biner untuk dijalankan secara langsung. Atau, dan lebih sederhana, lewatkan sajaexec
dan panggil"@"
dari shell asli Anda.