2017-02-28 82 views
0

我正在從我的shell腳本中讀取.properties文件。 我想讀取某些鍵的某些值,然後想要將它附加到某個字符串之間,但輸出很奇怪。Shell腳本 - 將字符串與變量連接後的奇怪行爲

#!/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是這樣

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

執行這個腳本我期待

ABCAddress=MumbaiDEF 

後,但我越來越喜歡輸出

DEFAddress=Mumbai 

會是什麼是這裏的問題嗎?

如果我在腳本中定義了任何變量,但是當我使用命令擴展從文件中讀取它時,它不起作用。

+2

你的文件是DOS格式。它包含回車符,打印時將光標發送到行的開頭。 –

+0

順便說一句,你有其他的錯誤在這裏http://shellcheck.net/會抓住。 –

+0

在代碼的其他問題中,請參閱[UUoC - 無用的'cat'](https://stackoverflow.com/questions/11710552/useless-use-of-cat)。我確定這是重複的;發現重複會更困難(可能不值得付出努力)。 –

回答

1

要從擴展變量中修剪回車返回,可以使用${varname%$'\r'}。因此:

echo "ABC${prop_value%$'\r'}DEF" 

更好地將保存您的屬性文件作爲本地的Unix文本文件,該文件不包含任何回車可言。