小编ata*_*ata的帖子

bash和readline:用户输入循环中的制表符完成?

我正在制作一个向用户提供命令行的bash脚本.

cli代码是这样的:

#!/bin/bash

cmd1() {
    echo $FUNCNAME: "$@"
}

cmd2() {
    echo $FUNCNAME: "$@"
}

cmdN() {
    echo $FUNCNAME: "$@"
}

__complete() {
    echo $allowed_commands
}

shopt -qs extglob

fn_hide_prefix='__'
allowed_commands="$(declare -f | sed -ne '/^'$fn_hide_prefix'.* ()/!s/ ().*//p' | tr '\n' ' ')"

complete -D -W "this should output these words when you hit TAB"

echo "waiting for commands"
while read -ep"-> "; do
    history -s $REPLY
    case "$REPLY" in
        @(${allowed_commands// /|})?(+([[:space:]])*)) $REPLY ;;
        \?) __complete ;;
        *) echo "invalid …
Run Code Online (Sandbox Code Playgroud)

bash bash-completion

31
推荐指数
3
解决办法
1万
查看次数

标签 统计

bash ×1

bash-completion ×1