
Ich habe folgendes:
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"
Die Ausgabe ist
PLATFORM = Linux64
DATE_STRING = 2015-10-31
VERSION_STRING = 1.2p2
####### Creating Archive ###########
-2015-10-31_CLXXXXXXXX.zip4-1.2p2
Alle Eingaben für die Erweiterung von BINARY_FILE sehen für mich richtig aus, aber das Ergebnis ist durcheinander. Ich bin vor einigen Jahren schon einmal darauf gestoßen, kann mich aber nicht erinnern, was die Ursache dafür ist. Irgendwelche Ideen? Danke!
Antwort1
Es gibt mit ziemlicher Sicherheit etwas nicht druckbares, das die Terminalanzeige durcheinander bringt, und ich habe das Gefühl, dass es sich um ein \r
eturn-Zeichen handelt, das aus../version.hpp
durch grep
in $VERSION_LINE
und von dort durch awk
in $VERSION_STRING
. Ich könnte mich irren, aber Sie solltenlaufen:
./yourscript | sed -n l
... um ein Gefühl dafür zu bekommen, was auch immer es ist.
Übrigens könnte es auch echo
Ihre Ausgabe verfälschen. Ein UNIX-konformerecho
Interpretieren von Escape-Befehlen im C-Stilin seinen Argumenten.