2011-04-13 52 views
1

我創建了一個簡單的bash函數:http://shr.im/ionyse-notify使用現有完成功能的多級Bash完成?

我想添加一個小完成文件。

我發現了兩個有趣的功能:

  • _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 

這是我的,但它doesn沒有工作。怎麼了 ?

回答

0

其實,這是很簡單的:

#!/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