나는 다음을 가지고 있습니다 :
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 스타일 이스케이프 설명그 주장에서.