On Tue, 2007-10-16 at 13:38 +0100, Steve Long wrote: > Roy Marples wrote: > > On Tue, 2007-10-16 at 00:28 -0700, Donnie Berkholz wrote: > >> On 08:19 Tue 16 Oct , Steve Long wrote: > >> > stdDocs=(ChangeLog AUTHORS FEATURES THANKS README CodingStyle TODO FAQ) > >> > > >> > stdDoc() { > >> > local d l=() > >> > for d in "[EMAIL PROTECTED]"; do > >> > [[ -f $d ]] && l+=("$d") > >> > done > >> > (([EMAIL PROTECTED])) && dodoc "[EMAIL PROTECTED]" > >> > } > >> > > >> > (assuming [[ $PWD = $S ]] or whichever is the right one for docs.) > >> > >> Is it just me, or is this code way more complex than it needs to be? It > >> looks like bashturbation to me. =P > > > LMAO. It's as complex as it needs to be to handle filenames with spaces or > any other character in. Remember: "Looks like it needs quotes there.. $D, > $S.." What, I should write crap script for this esteemed audience, cos you > only currently deal with filenames without spaces? ;P
No, it's overly complex. Consider this stddoc() { local d for d in ChangeLog AUTHORS FEATURES THANKS README \ CodingStyle TODO FAQ; do [ -f "${d}" ] && dodoc "${f}" done } Want spaces? stddoc() { local d for d in ChangeLog AUTHORS FEATURES THANKS README \ CodingStyle TODO FAQ "a file with spaces"; do [ -f "${d}" ] && dodoc "${f}" done } Or maybe you want to do it on one hit? stddoc() { local d set -- for d in ChangeLog AUTHORS FEATURES THANKS README \ CodingStyle TODO FAQ "a file with spaces"; do [ -f "${d}" ] && set -- "$@" "${f}" done dodoc "$@" } > > You can also do some pattern matching like so > > > > foo="foo foobar" > > > > [ "${foo%foobar}" = "${foo}" ] || echo "ends with foobar" > [[ $foo = *foobar ]] && echo "ends with foobar" > > > [ "${foo#foobar}" = "${foo}" ] || echo "starts with foo" > [[ $foo = foo* ]] && echo 'oh does it?' > There's no need for borked script that is counter-intuitive, and doesn't > have a third of the functionality either. I maybe wrong, but shouldn't you be using == inside [[ ]]? > [[ $foo = *'wow it '*"does as $well"* ]] && echo 'And a whole lot more!' case "${foo}" in *'wow it '*"does as $well"*) && echo "whatever you can do i can do in sh";; esac > Or should *nix only ever support > POSIX APIs for everything? #define _X_OPEN_SOURCE? No? Hmm.. *shrug* ;> No, I saying use whatever god given extensions you like. But if there's a portable way of doing the same thing then please use the portable way of doing it. > /me wanders down the pub.. *plop* Yeah, I'd drown my sorrows if I wrote shell script like you :P Thanks Roy -- [EMAIL PROTECTED] mailing list