When using complex tests (-o or -a) you can't use the double brackets. Try somethiong like this:
Code:
[[ -z "$Id" ]] || [[ ! $(grep -q $Id [1-8]) ]] && _Function1
or:
Code:
[ -z "$Id" -o ! $(grep -q $Id [1-8]) ] && _Function1
When you do use double brackets you have to leave a space between the brackets and the enclosed code.