在Programmable Completion Builtins完成命令中,有一個 -I 引數。它說:
-I 選項表示其他提供的選項和操作應適用于行上初始非賦值詞的完成,或在命令分隔符(如“;”)之后 或“|”,通常是命令名稱完成。
我不明白“就行的初始非賦值詞”,誰能舉個例子。
我設定了一個完整的 by complete -W 'AA BB' -I,它在“命令分隔符之后”作業
root@aliecs:~# complete -W 'AA BB' -I
root@aliecs:~# ls &&<tab><tab>
AA BB
root@aliecs:~# ls ;<tab><tab>
AA BB
root@aliecs:~# ls |<tab><tab>
AA BB
root@aliecs:~# ls ||<tab><tab>
AA BB
我想要一個“就行的初始非賦值詞”的例子
uj5u.com熱心網友回復:
Shell 命令由一系列單詞組成(其中“單詞”具有正式含義)。賦值詞是一個包含=:
foo=5
這是一個單詞,但在其他語言中,您可能會認為單詞foo、 an=和 a5只是沒有用空格分隔。
命令可以以 0 個或多個分配詞開頭。賦值詞不被視為要執行的命令的名稱,而是作為對該命令“本地”的變數賦值。例如,
x=5 foo
是一個命令,它在其環境中運行一個以foo變數命名的程式,其值為,而不是一個以引數命名的命令。x5x=5foo
出于完成的目的,您真的不想完成分配,因為分配的重點是定義可能不存在的東西,shell 怎么知道如何完成您尚未定義的東西?因此,該complete命令忽略了命令列開頭的賦值詞,并專注于可能是要執行的命令名稱的第一個詞。
uj5u.com熱心網友回復:
例子:
root@aliecs:~# complete -W 'AA BB BC' -I
root@aliecs:~# foo=1 B
BB BC
root@aliecs:~# B
BB BC
“B”是“未分配”。感謝@chepner 的回答。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/532826.html
上一篇:案例陳述句不匯出變數
