[英]Can bash autocompletion span an equal sign
我想知道是否有可能使自動補全跨越=符號。 因此,例如,我想輸入foo BAR=[TAB][TAB]
,並填寫BAR
的可能值。 我嘗試了以下操作:我有一個名為“ bar”的文件,如下所示:
#!/bin/bash
echo -e "BAR=100\nBAR=110\nBAR=200" | grep "^$2"
然后我做:
~> complete -C bar foo
如果輸入foo [TAB][TAB]
,它將為BAR提供一些可能的值。 如果我鍵入foo BAR=[TAB][TAB]
,它將失敗(它將BAR=BAR=
附加到命令末尾)。 (請注意,如果我輸入bar 1 BAR=
,它將為我提供正確的補全列表,因此這對bar腳本來說不是問題)。
這對於我擁有的某些腳本非常有用。
創建一個函數(例如,在您的.bashrc中):
bar()
{
local POS=${COMP_WORDS[COMP_CWORD]}
if [ "${COMP_WORDS[1]}" = "BAR" ] && [ $COMP_CWORD -eq 3 ]; then
COMPREPLY=($(echo -e "100\n110\n200" | grep ^$POS ))
fi
}
並將函數鏈接到命令foo:
complete -F bar foo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.