我有一个方法可以解释它在没有选项的情况下运行时的用法:
Usage:
SQLbatch [database] [file] [maximum # of lines in batch] [time to sleep between batches] [who to email when finished]
最近,我一直在空闲时间写一个 tab-completion 脚本:
_SQLbatch()
{
local cur dbs
COMPREPLY=()
dbs=$(< /...directory paths.../allDbs.txt)
cur="${COMP_WORDS[COMP_CWORD]}"
case "$COMP_CWORD" in
1)
case "$cur" in
*@*)
COMPREPLY=( $(compgen -W "$dbs" -- "$cur" | sed -e "s/.*@/@/") )
return 0
;;
*)
COMPREPLY=( $(compgen -W "$dbs" -- "$cur") )
return 0
;;
esac
;;
2)
COMPREPLY=( $(compgen -f -- "$cur") )
return 0
;;
*)
esac
}
complete -F _SQLbatch SQLbatch
到目前为止,这对于使用适当的数据库和文件完成第一个和第二个条目非常有用。但是,我也一直在尝试添加一种方法来简单地打印出“使用”信息,如果您在文件之后的任何位置双击标签。所以,如果我把它放到控制台中:
SQLbatch server@database file.txt [TAB][TAB]
我希望完成以提醒用户他们还需要什么,而不会破坏他们已经输入的内容。我的最新方法是这样的:
...
*)
echo -e "\nSQLbatch [database] [file] [maximum # of lines in batch] [time to sleep between batches] [who to email when finished]"
return 0
;;
esac
...
这几乎可以做到,但最终无法在最新行上重新显示用户输入。有没有办法强制这最后一步完成?