Это работает от оболочки:
export files=`ls /home/tests/`
complete -o filenames -W "${files}" xtest
Этот сценарий не делает:
_xtest () { .
local cur
local files=`ls /home/tests`
COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]}
#case "$cur" in
COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
# esac
return 0
}
complete -F _xtest -o filenames xtest
Что путь использует сценарий для автоматического заполнения из списка файлов каталога? Я использую сценарий, потому что только для 1 опции сценария (-тест) это специализированное требуемое автоматическое заполнение, для других опций сценария (-скорость, - определяют) автоматическое заполнение, по умолчанию в порядке.
Объявление переменной и присвоение ее на одной строке могут замаскировать возвращаемые значения. Использование $(..)
вместо обратных галочек прежней версии предпочтено. Учитывая отсутствие контекста Вашего отрывка кода следующий код является лучшим, я могу сделать со способностью протестировать его.
_xtest () {
local cur
local files
files=$(ls /home/tests)
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
case "$cur" in
-*)
COMPREPLY=( $( compgen -W $files --$cur ) );;
esac
return 0
}
complete -F _xtest -o filenames xtest