2010-09-20 22:51, Dave Reisner:
Your echo is redundant. Just quote the expansion and assign it.
NAK. Try this:
MODULES=( '!foo' '!bar' )
modules="${MODULES[@]/#\!*}"
[[ $modules ]]&& echo "'$modules' is not a null string"
' ' is not a null string
modules="${MODULES[@]/#\!*}"
I think we're a looooong way away from the day when there's a '!' as
part of a module name, but I think it's probably best to anchor the
expression to the start of each element regardless.
OK, but the quotes aren't needed because word splitting is not
performed here. So we finally get:
modules=$( echo ${MODULES[@]/#\!*} )
--
Kurt
We're going to have to agree that we're both right, and we're both
wrong. The echo is _still_ unnecessary. I've learned to quote everything in
bash, and now it's working against me.
$ MODULES=( '!foo' '!bar' )
$ modules=${MODULES[@]/#\!*/}
$ [[ -z $modules ]]&& echo null
null
d
Wow, that's really true :)