shell scripting question (mdconfig device choosing)
Luke Bakken
luke.bakken at gmail.com
Wed Jan 25 08:28:04 PST 2006
> > > Thank you very much - you got no output because you have no md devices in
> > > use. I have a few in use and this is the output I get:
> > >
> > > # mdconfig -l
> > > md3 md2 md1 md0
> > >
> > > But I could just as easily get:
> > >
> > > # mdconfig -l
> > > md9 md8 md5 md3
> > >
> > > Hmm...I just saw that that line is in perl, and I do not have perl
> > > installed on any of my 6.0 machines ... I am not sure I want to install it
> > > just for this one shell script :(
> >
> > Whoops, I forgot that perl isn't in the base any more. What scripting
> > languages do you have? If you only have sh, I'll work on that, but it
> > won't be a one-liner most likely. Or a C program.
>
>
> I am putting this into a larger, already written /bin/sh program
> ... doesn't need to be one line ...
>
> Wow - thanks a lot for your help.
OK, this works on my cygwin install and I think it's generic enough sh
programming it should work for you. You could expand the MDDEV
variable to encompass all of the devices you could have, past md9. I
read the mdconfig man page and it doesn't seem to have an option to
list all potential devices. You'll also have to change 'echo $DEV' to
whatever means you want to use to return the device from the function.
It's not the most elegant solution, but it works.
#!/bin/sh
function find_first_mdevice
{
MDDEV='md0 md1 md2 md3 md4 md5 md6 md7 md8 md9'
MDOUT=`mdconfig -l`
for DEV in $MDDEV
do
if ! echo $MDOUT | grep -q $DEV
then
break
fi
done
echo $DEV
}
find_first_mdevice
More information about the freebsd-questions
mailing list