Misalkan saya memiliki skrip yang menerima jalur sebagai parameter. Bagaimana saya bisa menjalankan semua skrip yang terletak di jalur itu?
Misalkan saya memiliki skrip yang menerima jalur sebagai parameter. Bagaimana saya bisa menjalankan semua skrip yang terletak di jalur itu?
Jawaban:
Dengan asumsi jalur yang Anda maksud jalur ke direktori, gunakan run-parts. Dari man run-parts:
run-parts - run scripts or programs in a directory
Pada awalnya Anda perlu mengatur izin eksekusi pada semua skrip yang ingin Anda jalankan. Biasanya run-partsakan mengabaikan direktori dan juga file yang tidak dapat dieksekusi berada di direktori itu.
Meskipun sebelum menjalankan Anda harus memeriksa file mana yang akan dijalankan oleh --testopsi:
run-parts --test /path/to/directory
Saya harus menyebutkan bahwa run-partsmemiliki konvensi penamaan yang ketat untuk skrip yang akan dieksekusi:
If neither the --lsbsysinit option nor the --regex option is given
then the names must consist entirely of ASCII upper- and
lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.
Periksa man run-partsuntuk mendapatkan lebih banyak ide.
run-parts /home/you/Dropbox/scripts_to_run.. hati-hati dengan penamaannya ..
Run-parts akan berfungsi jika skrip Anda memiliki nama yang benar. Jika Anda tidak ingin berurusan dengan mengubah nama skrip Anda agar sesuai run-partsdengan skema penamaan yang kompleks, Anda dapat melakukan sesuatu yang sederhana
for file in ~/target/*; do $file 2>/dev/null; done
Itu akan berusaha untuk mengeksekusi semua file (dan direktori) yang ditemukan di ~/target. The 2>/dev/nullpesan pengalihan error sehingga tidak akan mengeluh ketika mencoba untuk menjalankan direktori atau file non executable.
Atau, Anda dapat mencoba yang lebih canggih
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
Ini akan memeriksa apakah masing-masing hasil adalah file ( [ -f $file ]), dapat dieksekusi ( [ -x $file ]) dan hanya jika kedua tes tersebut berhasil akan mencoba untuk mengeksekusi file.