1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#compdef watch
local variant ret=1
local -a context line state state_descr
local -A opt_args
_pick_variant -r variant procps=procps $OSTYPE --version
case $variant in
(procps)
_arguments -s -S -A '-*' : \
'(: * -)'{-h,--help}'[display help information]' \
'(: * -)'{-v,--version}'[display version information]' \
'(-b --beep)'{-b,--beep}'[beep on non-zero command exit]' \
'(-c --color)'{-c,--color}'[interpret ANSI color/style sequences]' \
'(-d --differences)'{-d-,--differences=-}'[highlight changes between updates]::how to highlight:(permanent)' \
'(-e --errexit)'{-e,--errexit}'[freeze updates on non-zero command exit]' \
'(-g --chgexit)'{-g,--chgexit}'[exit on command output change]' \
'(-n --interval)'{-n+,--interval=}'[specify update interval]:update interval (seconds) [2]' \
'(-p --precise)'{-p,--precise}'[run command at precise intervals]' \
'(-t --no-title)'{-t,--no-title}'[disable header]' \
'(-x --exec)'{-x,--exec}'[pass command to exec(2) instead of `sh -c`]' \
'(-)*::: :->cmd' \
&& ret=0
[[ $state == cmd ]] &&
if
(( CURRENT == 1 )) &&
[[ $words[1] == (\"|\'|\$\')* ]] &&
[[ -z $opt_args[(i)(-x|--exec)] ]]
then
_cmdstring && ret=0
else
_normal && ret=0
fi
;;
# watch(1) has completely different semantics on freebsd compared to linux, hence:
(freebsd*|dragonfly*) _watch-snoop "$@" && ret=0 ;;
(*) _default && ret=0 ;;
esac
return ret
|