[英]reading variables from properties file in bash scripting
使用shell腳本從屬性文件讀取時如何轉義變量中的特殊字符。 屬性文件具有鍵和值,鍵中包含句點(。)符號。 密鑰中的此句點符號被視為可執行文件,bash正在執行它。 我把雙引號放在變量擴展中,但仍然拋出錯誤。 我在這做錯了什么
#!/bin/bash
source my-sonar.properties
for servicename in `cat my-services.input`
do
# Both variable expansions are not working.
echo $servicename ${sonar.host.url} ${sonar.login}
echo $servicename "$sonar.host.url" "$sonar.login"
done
root#cat my-sonar.properties
sonar.host.url=http://localhost:9000/sonar/
sonar.login=sonar-token-string
root#cat my-services.input
javaservice-one
javaservice-two
以下是我看到的錯誤。
my-sonar.properties: line 1: sonar.host.url=http://localhost:9000/sonar/: No such file or directory
my-sonar.properties: line 2: sonar.login=sonar-token-string: command not found
./sonar-execute.sh: line 7: ${sonar.host.url}: bad substitution
您可以在采購過程中傳輸點(並更改您使用它的代碼):
source <(tr "." "_" < my-sonar.properties)
echo "${sonar_login}"
編輯:此解決方案忽略了'='符號右側的任何點。 這可以通過source <(sed':a; s / [。]([^ =] * =)/ _ \\ 1 / g; ta'my-sonar.properties)來改進
請注意,可以編輯屬性文件的人也可以插入將在您的帳戶下執行的unix命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.