完成已知列表中的第二个参数
Completing second argument from known list
我正在编写 bash 脚本。它接收两个参数。第一个只是用户可以根据需要指定的字符串。然而,第二个参数必须是已知集合的成员,例如apple
、banana
、pinenut
或 pineapple
。我知道如何检查参数是否合法,但我觉得必须输入完整的单词很烦人。我可以将参数缩短为 a
、b
、pn
或 pa
,但这很难记住,而且有点难看。有没有办法提供自动完成,以便用户可以按 "a+tab",它会自动完成到 apple
?
function autocomp_fruit_script {
local cur opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
fruit="apple banana pinenut pineapple"
if [ $COMP_CWORD -eq 2 ]; then
COMPREPLY=( $(compgen -W "${fruit}" -- ${cur}) )
return 0
fi
}
complete -o nospace -F autocomp_fruit_script fruit_script
其中 fruit_script
是我的脚本。
我正在编写 bash 脚本。它接收两个参数。第一个只是用户可以根据需要指定的字符串。然而,第二个参数必须是已知集合的成员,例如apple
、banana
、pinenut
或 pineapple
。我知道如何检查参数是否合法,但我觉得必须输入完整的单词很烦人。我可以将参数缩短为 a
、b
、pn
或 pa
,但这很难记住,而且有点难看。有没有办法提供自动完成,以便用户可以按 "a+tab",它会自动完成到 apple
?
function autocomp_fruit_script {
local cur opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
fruit="apple banana pinenut pineapple"
if [ $COMP_CWORD -eq 2 ]; then
COMPREPLY=( $(compgen -W "${fruit}" -- ${cur}) )
return 0
fi
}
complete -o nospace -F autocomp_fruit_script fruit_script
其中 fruit_script
是我的脚本。