У меня есть скрипт, который принимает аргументы в виде файла (аргументы, состоящие из нескольких частей), я извлекаю возможные значения и помещаю их в массив с именем raw
, а затем использую
_multi_parts / "(${raw[@]})"
для автозаполнения. Проблема в том, что это чувствительно к регистру, как я могу сделать так, чтобы я набирал mycommand get fo
и нажимал Tab
, он автозаполнял до mycommand get Foo/
, если Foo
является одной из вещей в необработанном виде.
Полное завершение здесь для справки:
_mycommand() {
local curcontext="$curcontext" state line
_arguments "1: :->command" "*: :->label"
case $state in
command)
_arguments "1: :(add get ls rm)"
;;
*)
case $words[2] in
add|get|ls|rm)
if [ -f ~/.pts ]; then
IFS=$'\n' read -d '' -r raw <<< "$(mycommand ls)"
_multi_parts / "(${raw[@]})"
fi
;;
*)
_files
;;
esac
esac
}
_mycommand "$@"
mycommand ls
выводит путь как имена, подобные следующим:
Foo/Bar/x
Foo/Bar/y
Derp/z
Placeholder/z