1
什么bash基本都忘记了?我只是试图建立一个脚本文件名了版本和构建信息...Bash从文件中提取字符串作为变量使用
所以,死很容易,只要硬编码 - 这一切是有道理的:
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
??????“-45.zip-1.0.1”?
好,我虽然它可能是一些遗留换行符或文件结束字符,所以我尝试:
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.
谢谢。
该文件具有DOS行尾; VERSION实际上是'$'1.0.1 \ r''。删除DOS行末尾。 – chepner
是的 - 就是这样!忘了\ r(当然在nix系统上是一个_carriage return_,因此它为什么会返回到NAME的开头并覆盖它,应该已经发现了。谢谢。 – timlukins