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터미널 디스플레이에는 인쇄할 수 없는 것이 거의 확실하게 존재하며, 이는 에서 가져온 eturn 문자 인 것 같습니다.../version.hppby grepinto $VERSION_LINE와 그 이후부터 by awkinto $VERSION_STRING. 내가 틀릴 수도 있지만 넌 그래야 해달리다:

./yourscript | sed -n l

...그것이 무엇이든 느낌을 얻으려고요.

그건 그렇고, 그것은 echo당신의 출력에도 문제를 일으킬 수 있습니다. UNIX 표준을 준수 echo하는C 스타일 이스케이프 해석그 주장에서.

관련 정보