On Mon, Sep 20, 2010 at 11:57:06AM +1000, Allan McRae wrote: > On 20/09/10 11:54, Dave Reisner wrote: > >Use modprobe -a and a bash PE to filter the MODULES array. > > > >Signed-off-by: Dave Reisner<d@xxxxxxxxxxxxxx> > >--- > > rc.sysinit | 12 ++++-------- > > 1 files changed, 4 insertions(+), 8 deletions(-) > > > >diff --git a/rc.sysinit b/rc.sysinit > >index 09d5e97..4b6e1e7 100755 > >--- a/rc.sysinit > >+++ b/rc.sysinit > >@@ -92,14 +92,10 @@ if /bin/pidof -o %PPID /sbin/udevd>/dev/null; then > > fi > > > > # Load modules from the MODULES array defined in rc.conf > >-if [[ $load_modules != off&& -f /proc/modules ]]; then > >- stat_busy "Loading Modules" > >- for mod in "${MODULES[@]}"; do > >- if [[ $mod = ${mod#!} ]]; then > >- /sbin/modprobe $mod > >- fi > >- done > >- stat_done > >+if [[ $load_modules != off&& -f /proc/modules ]]&& (( ${#MODULES[@]}> 0 )); then > >+ stat_busy "Loading Modules" > >+ /sbin/modprobe -a "${MODULES[@]/#\!*/}" > >+ stat_done > > fi > > > > # Wait for udev uevents > > Does this still work in the "null" case where there is only modules > specified with "!" in the front? > > Allan > Excellent observation -- it would not. Counting the size of the array with the PE in place isn't possible (or desirable), either. Perhaps a more graceful solution is to reassign the output of the PE to a new array and operate based on that. Certainly still beats calling modprobe for every element in the array, imo. d