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