Расширение строки Bash повреждено

Расширение строки Bash повреждено

У меня есть следующее:

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в своих аргументах.

Связанный контент