我的命令是
thermostat.sh override off
我可以override
完成,但不能完成后续off
这是我的脚本
#/usr/bin/env bash
_thermostat-completions() {
if [ "${#COMP_WORDS[@]}" = "2" ]; then
COMPREPLY=($(compgen -W "off program hold override" "${COMP_WORDS[1]}"))
return
elif [ "${#COMP_WORDS[@]}" = "3" ]; then
if [ "${COMP_WORDS[2]}" = "override" ]; then
# This was a guess; it doesn't work.
COMPREPLY=($(compgen -W "off holiday" "${COMP_WORDS[1]} ${COMP_WORDS[2]}"))
return
fi
fi
}
complete -F _thermostat-completions thermostat.sh
可以完成第三个单词吗?我不知道该怎么做。
答案1
由于某种原因${COMP_WORDS[2]}
不起作用,但你可以通过以下方式解决这个问题
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [ "$prev" = "override" ]; then
那么: 有什么问题${COMP_WORDS[2]}
?
似乎不需要1
;2
这两者都有效。
#prev="${COMP_WORDS[COMP_CWORD-1]}"
prev="${COMP_WORDS[1]}"