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