2014-09-12 85 views
0

我想寫我自己的shell腳本。這幾乎完成了,所以我想添加版本。例如,foo -v要打印foo 1.0.0如何在編寫我自己的shell腳本時添加版本功能?

但我不確定什麼是好方法。我可以在我的執行文件中編寫版本,但每次將程序更新到新版本時都必須更改。

我需要你的幫助:)

+0

好主意。所以,你有版本號*某處*(我的意思是,在計算機上的某個地方,而不是在你的頭上)。它在哪裏? – thb 2014-09-12 15:21:29

+0

您的意思是我可以在某處保存版本號,然後讀取並輸出? – 2014-09-12 15:23:21

+0

是的,我認爲是。只在一個地方保存這個數字可能是一個好主意,因爲這樣可以減少您稍後記住在一個地方更新到1.0.1的可能性,但忘記在另一個地方更新。但是有很多方法可以做到這一點。 (我承認,在我自己的大型項目中,爲了節省麻煩,我有時會在兩個地方輸入版本號,但這並不適合我。) – thb 2014-09-12 15:25:22

回答

1

既然你有版本號地方(我的意思是,在某個地方的計算機上,地方比你的頭除外),你可以保持在號碼中(最好是,如果可行的,只在一個地方),然後閱讀並輸出。

當然有很多方法可以做到這一點。一種方法是通過殼牌的.採購機制。例如,如果文件foo_version由單行的

FOO_VERSION=1.0.0 

那麼您可以在foo通過

#!/bin/bash -e 
. $(dirname "$0")/foo_version 

# ... 

echo "foo ${FOO_VERSION}" 

或者你foo_version喜歡用這個可以只包括1.0.0,在這種情況下,你的foo只會將其作爲文本讀取。並且還有更多的可能性,特別是如果您將包裝用於分發的軟件。正如@JonathanLeffler所觀察到的,當您與團隊合作和/或使用版本控制軟件(RCS,CVS,Subversion,Mercurial,Git等)時,需要更謹慎的方法,但是如果和當您開始使用版本控制軟件,當你閱讀版本控制軟件的手冊時,你很快就會了解到這一切。

+0

將腳本的版本放在單獨的文件中是讓兩個文件不同步的祕訣 - 代碼的版本不一定與版本文件的版本匹配。 – 2014-09-12 15:51:59

+0

@JonathanLeffler:你說得很好,當我回答時,我確實想到了一點。我的回答忽略了這一點,僅僅是因爲我猜測OP是一個單獨的非團隊程序員,他還沒有開始使用版本控制。所以,我現在將你的觀點加入我的答案。謝謝。 – thb 2014-09-12 15:59:24