Saya mendefinisikan fungsi shell (sebut saja clock), yang ingin saya gunakan sebagai pembungkus untuk perintah lain, mirip dengan timefungsi, 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 -RHarus menampilkan hasil dari timebuilt-in, dan tidak /usr/bin/timedapat dieksekusi. Tapi execselalu 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 timeitu 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 sajaexecdan panggil"@"dari shell asli Anda.