我有一個帶有默認選項的命令 - id??赡苓€有其他標志,因此可以調用以下任何一個。cmd 81313 # 81313 is the ID
cmd -i 81313cmd -f foo.txt 81313
cmd -i 81313 -f foo.txt
cmd 81313 -f foo.txt使用 Cobra 命令處理此問題的正確方法是什么?目前,我正在查看的值-i,如果它為空,則從中讀取值cmdArgs(如果其中有內容,并且沒有標志,那么我假設它是我的 ID)。然而,這似乎更容易出錯——例如,如果有人放下 2 個 ID 會怎樣。謝謝!
1 回答

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
我希望有一種更慣用的方式來完成
我認為有,這就是我試圖在評論中傳達的想法:不要提供多種方式來在命令行上指定相同的選項。
在位置參數與選項之間進行選擇時,問題通常是“這個值是命令運行的對象嗎?”。例如,像這樣的命令rm
對文件進行操作,因此文件被指定為位置參數:我們不需要寫rm -f file1 -f file2 -f file3
,等等。
同樣,該ssh
命令連接到遠程主機,因此主機名是一個位置參數。有關該連接的元數據(要使用的身份、要使用的端口、配置選項等)也被指定為命令行選項。
你的問題有點難以回答,因為你還沒有告訴我們你的命令實際上做了什么。如果每次調用都需要“id”,cmd
并且它標識了命令操作的對象,那么您應該只將它設為位置參數:
cmd 81313
如果在某些情況下您不需要指定 ID,那么它應該是一個可選參數:
cmd -i 81313
在某些情況下,您可能有“強制性選擇”,但這種情況相對較少。
- 1 回答
- 0 關注
- 136 瀏覽
添加回答
舉報
0/150
提交
取消