相关疑难解决方法(0)

逗号分隔值的 Bash 补全

我想为逗号分隔的参数列表创建完成规则。例如,我有接收服务器名称列表的命令:

myscript -s name1,name2,name3
Run Code Online (Sandbox Code Playgroud)

此时我已经设法编写了以下完成:

_myscript () {
  local cur prev opts

  _get_comp_words_by_ref cur prev

  opts='-s'

  servers='name1 name2 name3'

  if [[ ${cur} == -* ]] ; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
  else
    case "${prev}" in
      -s)
        if [[ "$cur" == *,* ]]; then
          local realcur prefix
          realcur=${cur##*,}
          prefix=${cur%,*}
          COMPREPLY=( $(compgen -W "${servers}" -P "${prefix}," -- ${realcur}) )
        else
          COMPREPLY=( $(compgen -W "${servers}" -- ${cur}) )
        fi
        ;;
      *)
        # do nothing
        ;;
    esac
  fi
}
Run Code Online (Sandbox Code Playgroud)

但它至少有两个问题:

  1. 当前值的建议包括其前缀中的所有先前值。 …

bash autocomplete

17
推荐指数
1
解决办法
1528
查看次数

标签 统计

autocomplete ×1

bash ×1