Полученное завершение настраиваемого удара, полученное из текста справкиLinux

Ответить Пред. темаСлед. тема
Anonymous
 Полученное завершение настраиваемого удара, полученное из текста справки

Сообщение Anonymous »

По какой -то причине заполнение BASH не работает, когда я получаю по поводу текста. Я знаю, что это звучит загадочно, но, пожалуйста, прочитайте дальше, чтобы понять меня.

Код: Выделить всё

$ cat dbcmd
echo "Usage: dbcmd [ []]
Commands:
backup
db-backup
db-purge
load
debug
analyze
cycle
endday
gendbset
help
perform
print
remove
restart
dump
start
status
stop
tables
info
update"
< /code>
И это мой скрипт завершения. (Кредит: https: //iridakos.com/programming/2018/03/01/bash-programmable-complotion-tutorial) 
$ cat dbcmd_completion.bash
#/usr/bin/env bash
_dbcmd_completions()
{
if [ "${#COMP_WORDS[@]}" != "2" ]; then
return
fi

local IFS=$'\n'
local list_var="$(dbcmd|awk -F '\t' '{printf("%s", $1)}'|sed 's/.*://'|sed 's/^\s.//'|sed 's/\s\+/ /g')"
local suggestions=($(compgen -W "$list_var" -- "${COMP_WORDS[1]}"))

if [ "${#suggestions[@]}" == "1" ]; then
local number="${suggestions[0]/%\ */}"
COMPREPLY=("$number")
else
for i in "${!suggestions[@]}"; do
suggestions[$i]="$(printf '%*s' "-$COLUMNS"  "${suggestions[$i]}")"
done
COMPREPLY=("${suggestions[@]}")
fi
}

_dothis_completions()
{
if [ "${#COMP_WORDS[@]}" != "2" ]; then
return
fi
local list_var="backup db-backup db-purge load debug analyze cycle endday gendbset help perform print remove restart dump start status stop tables info update"
local suggestions=($(compgen -W "$list_var" -- "${COMP_WORDS[1]}"))

if [ "${#suggestions[@]}" == "1" ]; then
local number="${suggestions[0]/%\ */}"
COMPREPLY=("$number")
else
for i in "${!suggestions[@]}"; do
suggestions[$i]="$(printf '%*s' "-$COLUMNS"  "${suggestions[$i]}")"
done
COMPREPLY=("${suggestions[@]}")
fi
}
#complete -F _dothis_completions dbcmd
complete -F _dbcmd_completions dbcmd
В вышеприведенном случае, когда я не могу и использовать _dothis_completions , он работает отлично, но _dbcmd_completions , который получает список завершения из текста справки dbcmd не работает Полем Когда вкладка нажимается, он создает странное поведение. Когда вы выполняете echo $ list_var в основном в обеих функциях дают один и тот же результат. Не уверен, почему завершение Bash не любит результат AWK/SED. Это на RH 9.
Может ли кто -нибудь предоставить решение для этого? < /P>

Подробнее здесь: https://stackoverflow.com/questions/793 ... -help-text
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»