A simple test like:
if [ "$1" == "-h" ]; then
echo "Fail"
fi
fails with the error "zsh: = not found", even though == claims to be the preferred test mechanism. The same statement with double brackets [[ ]] works and single = also works. The construct with single bracket [ and double equals == works fine in bash.