gpt4 book ai didi

从另一个完成 Bash 完成

转载 作者:行者123 更新时间:2023-11-29 09:30:07 26 4
gpt4 key购买 nike

我有一个脚本需要命令名称和该命令的参数作为参数。

所以我想编写一个完成函数来完成命令的名称并完成该命令的参数。

所以我可以这样完成命令的名称

if [[ "$COMP_CWORD" == 1 ]]; then
COMPREPLY=( $( compgen -c ${COMP_WORDS[COMP_CWORD]} ))
else
#Don't know what to write here
fi

因此,这将完成可运行的 shell 命令列表的第一个参数。在第二个和其他论点上,我需要完成${COMP_WORDS[COMP_CWORD]} 命令。

我考虑从 COMP_WORDS 中删除第一个元素,将 COMP_CWORD 减一个并调用函数 _${COMP_WORDS[0]}名称在命令前加上“_”,因为在许多示例中,完成命令的函数都有这样的名称,但是当我在 bash 中执行 complete -p 时,我发现许多命令都是用函数完成的有不同的名字。对于我来说,这样的解决方案看起来非常糟糕。

我不是 bash 脚本大师,所以我不知道从哪里开始搜索解决方案。

最佳答案

您的要求类似于exectimexargs 的命令完成。这些命令还将命令和该命令的参数作为完成选项。

检查 exec 的 bash_completion 选项:

$ complete -p exec
complete -F _command exec

您可以重复使用相同的函数 _command 作为您的完成函数..

用法:

complete -F _command your-script.sh

关于从另一个完成 Bash 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com