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