Эта ошибка может быть вызвана неконтролируемыми требованиями к Java-версии.
В моем случае я смог разрешить эту ошибку, создав высокопрофильный проект с открытым исходным кодом, переключившись с Java 9 на Java 8 используя SDKMAN! .
sdk list java
sdk install java 8u152-zulu
sdk use java 8u152-zulu
Затем выполните чистую установку, как описано ниже.
При использовании Maven в качестве инструмента построения иногда полезно - и, как правило, приятно, сделать clean сборку установки с отключенным тестированием.
mvn clean install -DskipTests
Теперь, когда все построенный и установленный, вы можете продолжить и запустить тесты.
mvn test
В этот момент проверьте значение COMP_LINE
:
$ asd one <TAB>
Вы заметите, что это значение:
declare -x COMP_LINE="asd one "
. Это приведет к двум позиционным параметрам после того, как вы выдадите set
, и ваше состояние не будет вызвано. Попробуйте ввести дополнительный символ: $ asd one o<TAB>
, и вы увидите, что ваше условие будет запущено правильно, и ничего не будет завершено.
Большинство завершений, которые я видел, были выполнены с использованием функции. Фактически, проверка всех завершений, определенных в моей системе сейчас (большинство из них по умолчанию), ни один из них не выполняется с использованием сценария.
Использование функции имеет некоторые преимущества, например массив COMP_WORDS
, который учитывает кавычки. Ваш скрипт можно было бы переписать примерно так:
_asd_comp() {
(( COMP_CWORD > 1 )) && return
local cur=${COMP_WORDS[COMP_CWORD]} IFS=$' \t\n'
COMPREPLY=( $(compgen -W "one two three" -- "$cur") )
}
complete -o bashdefault -o default -F _asd_comp asd
Я добавил параметры -o
, чтобы по умолчанию выполнялись после первого аргумента. Вы можете узнать больше об этом в руководстве .
Единственное, что приходит на ум в том, как изменить ваш скрипт, я думаю, вы могли бы добавить довольно нечистое состояние, таких как:
(( $# > 1 )) && [[ ${COMP_LINE: -1} = " " ]] && return
bash
вы используете? Предыдущие версииbash
имели проблемы с-1
. Вместо этого вы можете попробовать${COMP_LINE:${#COMP_LINE}-1}
. Ну, функция / сценарий зависит от вас, чтобы решить. Некоторый глобальный скрипт завершения, который будет получать источники, звучит хорошо, учитывая преимущества. – PesaThe 13 July 2018 в 20:33