On Wed, Aug 10, 2005 at 02:00:18PM -0500, Ken Dibble wrote: >Christopher Faylor wrote: > >>On Wed, Aug 10, 2005 at 02:36:16PM -0400, Christopher Faylor wrote: >> >> >>>On Wed, Aug 10, 2005 at 11:23:00AM -0700, Linda W wrote: >>> >>> >>>>Is there a way to find out in a bash script the cygdrive prefix? >>>>I thought something simple like >>>> mount -p|tail -1|cut -f1 >>>>but that incorrectly assumed the fields were tab delimited. >>>>Since there can be spaces in the cygdrive prefix, I can't >>>>use space a delimiter, example: >>>># mount -p >>>>Prefix Type Flags >>>>/cyg drive posix path system binmode >>>>---- >>>> >>>> >>>There may be a simpler way to do it, but this seems to work: >>> >>>mount -p | sed -n '2s/\([^ ]\) *[^ ][^ ]* *[^ ][^ ]*$/\1/p' >>> >>> >> >>This is shorter: >> >>mount -p | sed -nr '2s/([^ ]) +\S+ +\S+$/\1/p' >> >Or you can do it the long, slow wasteful way, which us dullards are required >to use, so we can figure out why it broke yet again. > >#!/bin/bash >let c=0; ># get the number of fields >for i in `mount -p | tail -1`; do let c=$c+1; done > ># if number of fields is greater than 3 because mount point has a space, >add them >CUT_FIELDS="--fields=1" >let i=3; >while [ $i -lt $c ] >do >CUT_FIELDS=$CUT_FIELDS,$i >let i=$i+1 >done > ># get the fields >mount -p | tail -1 | /usr/bin/cut --delimiter=" " $CUT_FIELDS
Personally, if something breaks, I'd rather look at one line than eighteen. I can't imagine why anyone would find the above an acceptable solution when it's possible to do it all with one line. And, the above doesn't handle imbedded spaces. Btw, a further simplification: mount -p | sed -nr '2s/(\S) +\S+ +\S+$/\1/p' cgf -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/