我有一个部署到服务器的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 =}' –