Bash从文件中提取字符串以用作变量

时间:2015-11-05 14:58:29

标签: bash

我忘了什么bash基本?我只是尝试使用VERSION和BUILD信息在脚本中构建文件名...

所以,如果硬编码就很容易 - 这一切都有道理:

VERSION=1.0.1
BUILD=45
NAME=Product-$VERSION-$BUILD.zip
echo $NAME
> Product-1.0.1-45.zip

但是,如果VERSION是通过文件中的(单个)行提供的,内容只是" 1.0.1":

VERSION=$(<version.txt)
echo $VERSION
> 1.0.1
BUILD=45
NAME=Product-$VERSION-$BUILD.zip
echo $NAME
> -45.zip-1.0.1

?????? &#34; -45.zip-1.0.1&#34;?

好吧,虽然我可能会留下换行符或文件结尾字符,所以我试过了:

VERSION=$(cat version.txt)
VERSION=$(cat version.txt | tr -d '\n')
VERSION=$(sed -n '1p' version.txt)

同样的效果。在NAME="..."周围使用引号没有快乐(我以为有一些插值正在进行......)

而且,这一切都在Mac上:

bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

谢谢。

1 个答案:

答案 0 :(得分:2)

尝试:

VERSION=$(tr -d '\r' < version.txt)

因为version.txt似乎有DOS行结尾。