2012-09-02 70 views
0

我在寫一個可執行腳本(perl),它從命令行接受參數。下面是一些不同的syntaxs,我能想到的:什麼是推薦的命令行參數語法?

  1. myPerlScript 10 42
  2. myPerlScript myarg1=10 myarg2=42
  3. myPerlScript -myarg1=10 -myarg2=42
  4. myPerlScript myarg1 10 myarg2 42
  5. myPerlScript -myarg1 10 -myarg2 42

我不喜歡選項1,因爲它是不可能以任意順序給出參數,或者跳過參數依靠默認值。我也想給2(或3,...)維參數。下面是一些例子再次:

  1. myPerlScript myarg 10x20
  2. myPerlScript myarg=10x20
  3. myPerlScript -myarg 10x20
  4. myPerlScript -myarg=10x20
  5. myPerlScript -myarg=10 20
  6. myPerlScript -myarg=10,20

什麼是推薦的語法是?或者你會推薦什麼?這是否取決於情況和/或腳本的用途?

回答

1

我不知道很多有關Perl,但是在Ruby世界(和UNIX的其餘部分,我可以看到),這似乎是最接受的成語:

myPerlScript --myarg1 10 --myarg2 42 

有單之間的差異雙短跑。一些命令有兩種形式:長(完整命令名稱)和簡短(爲簡潔起見,單個字母)。雙破折號是長形式,單 - 短。真實生活的例子:

mysql --user root 
mysql -u root 

我會說,使用單一的破折號與長形式將令人驚訝。不要那樣:)

而且我也可以推薦這本優秀的書:Building awesome command-line applications in Ruby。雖然它對你來說沒有什麼價值,因爲它是用ruby而不是perl。

+0

uhhhh。我沒有想到兩個破折號。我沒有經常見到。是否爲純bash保留了一個破折號?你對2D案件有意見嗎? – hpekristiansen

+0

2D也不例外。我會把它寫成'myscript --myarg 10x20' –

+0

@ Hans-PeterE.Kristiansen:好吧,正如我所說的,很可能在perl世界裏你有不同的習語。我的回答是關於我在日常生活中觀察到的,並閱讀書籍。 –