OK, I've already re-written my script so that the error doesn't occur, but in the interests of our quest for knowledge and truth, I've doen some more checking:-)

My original line was

[ "${@:0-2:1}" = "." ] || echo

and this causes the seg. fault - always. But if I replace this with:-

anyvarname="$@"
[ "${anyvarname:0-2:1}" = "." ] || echo

there is no error. IOW the problem only relates to when $@ is used and seems to confirm the existence of a bash internal bug.

It's no longer a problem for me, but interesting to know what not to do in the future.