读取命令可以在bash完成脚本中工作吗?

时间:2019-05-16 20:11:20

标签: bash unix bash-completion

我正在尝试编写一个bash完成脚本,该脚本可以调用某个工具,该工具有时需要用户输入密码和验证者令牌。

似乎任何等待完成脚本中输入的尝试都会导致会话无限期挂起。我对read的行为相同,因此我用了一个代码示例。如果您单独调用thing_that_waits函数,则readecho会按预期运行。如果尝试使用ttw<TAB><TAB>,将打印出第一次读取的文本,但是会话将无限期挂起。

我在bash 5.0.7和3.2.57上得到了相同的结果。

#!/usr/bin/env bash

thing_that_waits()
{
    read -p "password" pw
    read -p "token" token
    echo "$pw and $token"
}

_ttw_completions()
{
    local cur
    cur=${COMP_WORDS[COMP_CWORD]}
    case "$cur" in
        -*)
            COMPREPLY=( $( compgen -W '-a -b -c' -- "$cur") )
            ;;
        *)
            thing_that_waits
            COMPREPLY=( $( compgen -W "d e f" -- "$cur" ) )
            ;;
    esac
}

complete -F _ttw_completions ttw

0 个答案:

没有答案