2017-02-28 10 views
0

私のシェルスクリプトから.propertiesファイルを読んでいます。 私はいくつかのキーの値を読みたいと思っていましたが、後でそれをいくつかの文字列の間に追加したいのですが、出力は変です。シェルスクリプト - 文字列を変数に連結した後の変な動作

#!/bin/bash 
# Script used to read Property File 
FILE_NAME="Test.properties" 
prop_value=$(cat ${FILE_NAME} | grep Address) 
echo "ABC${prop_value}DEF" 

私Test.propertiesは、このスクリプトを実行した後、私は

ABCAddress=MumbaiDEF 

を期待していますが、私は

DEFAddress=Mumbai 

何だろうのような出力を取得しています。この

Name=Pravin 
Age=25 
Address=Mumbai 
asd=asd 

のようなものですここで問題になりますか?

スクリプトで変数を定義すると動作しますが、コマンド拡張を使用してファイルから読み込むと機能しません。

+2

ファイルはDOS形式です。キャリッジリターンが含まれており、印刷時に行の先頭にカーソルを送ります。 –

+0

ところで、あなたはhttp://shellcheck.net/がキャッチする他のバグがあります。 –

+0

コードに関するその他の問題のうち、[UUoC - 'cat'の無駄な使用](https://stackoverflow.com/questions/11710552/useless-use-of-cat)を参照してください。私はこれが重複していると確信しています。重複を見つけることはより困難になります(そしておそらく努力に値するものではありません)。 –

答えて

1

拡張時に変数からキャリッジリターンをトリムするには、${varname%$'\r'}を使用できます。したがって、

キャリッジリターンを一切含まないネイティブのUnixテキストファイルとしてプロパティファイルを保存する方がよいでしょう。

関連する問題