簡體   English   中英

在bash腳本中從屬性文件中讀取變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM