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.hppgrepを入力し、$VERSION_LINEそこからをawk入力してください$VERSION_STRING。私は間違っているかもしれませんが、あなたはそうする必要があります走る:

./yourscript | sed -n l

...それが何であるかを感じてください。

ちなみに、それはechoあなたの出力に影響を与える可能性が高いです。 UNIX規格に準拠するecho予定です。Cスタイルエスケープの説明その主張で。

おすすめ記事