
我有以下內容:
echo "PLATFORM = $PLATFORM"
DATE_STRING=`date +"20%y-%m-%d"`
echo "DATE_STRING = $DATE_STRING"
# VERSION_LINE will be something like: '#define VERSION_STRING "1.2p2"'
VERSION_LINE=`grep "^#define VERSION_STRING" ../version.hpp`
# - awk pulls the "1.2p2"
# - tr deletes the surrounding quotes
VERSION_STRING=`echo "$VERSION_LINE" | awk '{ print $3 }' | tr -d '"'`
echo "VERSION_STRING = $VERSION_STRING"
echo "####### Creating Archive ###########"
BINARY_FILE="build${PLATFORM}-${VERSION_STRING}-${DATE_STRING}_CLXXXXXXXX.zip"
echo "BINARY_FILE is $BINARY_FILE"
輸出是
PLATFORM = Linux64
DATE_STRING = 2015-10-31
VERSION_STRING = 1.2p2
####### Creating Archive ###########
-2015-10-31_CLXXXXXXXX.zip4-1.2p2
BINARY_FILE 擴充的所有輸入在我看來都是正確的,但結果卻很糟糕。我幾年前就遇到過這種情況,但永遠不記得是什麼原因造成的。有任何想法嗎?謝謝!
答案1
幾乎肯定有一些不可打印的東西在終端顯示中亂七八糟,我有一種預感,它是\r
從其中取出的一個返回字符../version.hpp
由grep
進入$VERSION_LINE
和從那裡由awk
進入$VERSION_STRING
。我可能是錯的,但你應該跑步:
./yourscript | sed -n l
……感受一下它是什麼。
順便說一句,它echo
也很可能會影響你的輸出。符合 UNIX 標準的echo
意志解釋 C 風格的轉義在其論點中。