我忘了什么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.
谢谢。
答案 0 :(得分:2)
尝试:
VERSION=$(tr -d '\r' < version.txt)
因为version.txt
似乎有DOS行结尾。