Expansión de cadena Bash corrupta

Expansión de cadena Bash corrupta

Tengo lo siguiente:

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"

La salida es

PLATFORM = Linux64
DATE_STRING = 2015-10-31
VERSION_STRING = 1.2p2
####### Creating Archive ###########
-2015-10-31_CLXXXXXXXX.zip4-1.2p2

Todas las entradas para la expansión de BINARY_FILE me parecen correctas, pero el resultado está arruinado. Me encontré con esto hace varios años, pero nunca recuerdo qué lo causa. ¿Algunas ideas? ¡Gracias!

Respuesta1

Es casi seguro que hay algo no imprimible ahí jugando con la pantalla del terminal, y tengo el presentimiento de que es un \rcarácter eturn sacado de../version.hpppor grepdentro $VERSION_LINEy desde allí por awkdentro$VERSION_STRING . Podría estar equivocado, pero deberíascorrer:

./yourscript | sed -n l

...para tener una idea de lo que sea.

Por cierto, es muy posible que echotambién esté arruinando tu producción. Un dispositivo compatible con los estándares UNIXecho Un dispositivointerpretar escapes estilo Cen sus argumentos.

información relacionada