On Wed, Dec 17, 2008 at 10:03:09AM -0600, Nicolas Williams wrote:
> To make it easier for you I wrote you the attached function to
> backslash-quote white-space in strings.  That way you can change the
> main body of unmountall to:

The attachment didn't make the list, and though you have it, I forgot to
remove debug output.  So here it is inlined.

bquote () {
        orig=$1
        set -- $1
        bquoted=$1
        shift
        while [ $# -gt 0 ]
        do
                case "$orig" in
                        $bquoted\ ${1}*) bquoted="$bquoted\\ $1";;
                        # IF YOU CUT-N-PASTE do make SURE you fix spaces
                        # back to tabs in the next line!
                        $bquoted\       ${1}*) bquoted="$bquoted\\      $1";;
                        *) return 1;;
                esac
                shift
        done
        return 0
}

You can test it like so:

while read a b c
do
        bquote "$a"
        a=$bquoted
        bquote "$b"
        b=$bquoted
        bquote "$c"
        c=$bquoted
        echo "$a $b $c"
done <<EOF
foo bar baz
foo\\ bar baz
note the tab in the next line
foo\\   bar baz
EOF


Nico
-- 

Reply via email to