我有一个简单的 bash 函数,基本上是一个围绕 scp 的包装器。调用使用
copytomachine <Machine> <File>
Run Code Online (Sandbox Code Playgroud)
我已经设置了一些简单的自动完成,这样当我输入
copytomachine <TAB><TAB>
Run Code Online (Sandbox Code Playgroud)
它向我展示了可用机器的列表,目前只是一个硬编码的序列,这对我的需求来说很好。
但是,如果我输入
copytomachine BUILD_SERVER <TAB><TAB>
Run Code Online (Sandbox Code Playgroud)
我希望它为我提供目录中的文件列表,并能够自动完成它们的路径等。但是,我不希望将此文件列表呈现给我的第一个参数(机器名称)。
我当前的完成脚本如下所示:
_machines_completions()
{
local opts
opts="BUILD_SERVER TEST_SERVER LOCAL_MACHINE"
COMPREPLY=( $(compgen -W "${opts}" -- ${COMP_WORDS[COMP_CWORD]}) )
return 0
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我如何修改它以允许我为参数 1 的这些定义的机器名称和参数 2 的文件名的制表符完成?