簡體   English   中英

bash自動補全可以跨越等號嗎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM