我有一個部署到服務器的Web應用程序。我正在嘗試創建一個腳本,用於從與應用程序一起部署的屬性文件中讀取當前版本的Web應用程序。Bash:從某些文件讀取時連接字符串失敗
文件看起來是這樣的:
//other content
version=[version number]
build=[buildnumber]
//other content
我想創建一個變量,如下所示:version-buildnumber
這是我爲它的腳本:
VERSION_FILE=myfile
VERSION_LINE="$(grep "version=" $VERSION_FILE)"
VERSION=${VERSION_LINE#$"version="}
BUILDNUMBER_LINE=$(grep "build=" $VERSION_FILE)
BUILDNUMBER=${BUILDNUMBER_LINE#$"build="}
THEVERSION=${VERSION}-${BUILDNUMBER}
奇怪的這是否適用於某些情況,但不適用於其他情況。 我得到的問題是當我試圖連接字符串(即上面的最後一行)。在某些情況下,它可以很好地工作,但在其他情況下,一個字符串中的字符會替換另一個字符,而不是後來放置。
它在這些情況下不工作:
- 當我從部署文件中讀取
- 如果我複製部署的文件到另一個位置,並從那裏
閱讀確實在這些情況下工作:
- 如果我從頭開始編寫一個文件並從該文件讀取。
- 如果我創建自己的文件,然後將部署文件中的內容複製到我創建的文件中。
我覺得這很奇怪。有沒有人認識到這一點?
/路德維希
你可以重現嗎?,你嘗試用'set -x'調試嗎? – KurzedMetal
如果有一件事bash不是特別擅長處理文本。我認爲你會發現將這項工作委託給Python,Perl或awk更容易。 – nsfyn55
看起來你在那裏有一些流浪'$' - 'VERSION = $ {VERSION_LINE#version =}' –