#autoload local i os s=2 local -a args i=${@[(i):]} (( i > $# )) && i=0 args=(${@[1,i]}) shift $i case $OSTYPE in aix*) os=A;; cygwin*) os=C;; dragonfly*) os=D;; freebsd*) os=F;; hpux*) os=H;; irix*) os=I;; linux*) os=L;; darwin*) os=M;; netbsd*) os=N;; openbsd*) os=O;; solaris*) os=S;; esac for 1; do if [[ $1 == [[:upper:]]## ]]; then (( s == 2 )) && s=0 [[ $1 == *$os* ]] && s=1 else (( s )) || continue args+=($1) s=2 fi done _arguments "$args[@]"