使用现有完成功能进行多级 Bash 完成?

发布于 2024-10-31 20:15:07 字数 719 浏览 0 评论 0原文

我创建了一个简单的 bash 函数: http://shr.im/ionyse-notify

我想添加一个小的完成文件。

我发现了两个有趣的函数:

  • _known_hosts
  • _user_at_host

我怎么能说对于第一个参数,它应该使用 _known_hosts 完成,第二个参数使用 _user_at_host

#!/bin/bash

_send-msg_complete()
{
  local cur prev

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  if [ $COMP_CWORD -eq 1 ]; then
      COMPREPLY=( $(compgen -F _known_hosts -- $cur) )
  elif [ $COMP_CWORD -eq 2 ]; then
      COMPREPLY=( $(compgen -F _user_at_host -- $cur) )
  fi

  return 0
} &&

complete -F _send-msg_complete send-msg

这是我所拥有的,但它不起作用。怎么了 ?

I created a simple bash function : http://shr.im/ionyse-notify

I would like to add a little completion file.

I found two interesting functions :

  • _known_hosts
  • _user_at_host

How can I say that for the first argument, it should complete using _known_hosts and for the second using _user_at_host

#!/bin/bash

_send-msg_complete()
{
  local cur prev

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  if [ $COMP_CWORD -eq 1 ]; then
      COMPREPLY=( $(compgen -F _known_hosts -- $cur) )
  elif [ $COMP_CWORD -eq 2 ]; then
      COMPREPLY=( $(compgen -F _user_at_host -- $cur) )
  fi

  return 0
} &&

complete -F _send-msg_complete send-msg

Here is what I have, but it doesn't work. What's wrong ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残龙傲雪 2024-11-07 20:15:07

实际上,这很简单:

#!/bin/bash

_send-msg_complete()
{
  local cur prev

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  if [ $COMP_CWORD -eq 1 ]; then
      _known_hosts
  elif [ $COMP_CWORD -eq 2 ]; then
      _user_at_host
  fi

  return 0
} &&

complete -F _send-msg_complete send-msg

Actually, it is quite simple :

#!/bin/bash

_send-msg_complete()
{
  local cur prev

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}
  prev=${COMP_WORDS[COMP_CWORD-1]}

  if [ $COMP_CWORD -eq 1 ]; then
      _known_hosts
  elif [ $COMP_CWORD -eq 2 ]; then
      _user_at_host
  fi

  return 0
} &&

complete -F _send-msg_complete send-msg
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文