在bash脚本中从属性文件读取变量

时间:2019-04-30 17:28:56

标签: bash shell variables scripting

使用Shell脚本从属性文件读取时,如何转义变量中的特殊字符。属性文件具有键和值,并且键中具有period(。)符号。密钥中的此句点符号被视为可执行文件,bash正在执行它。我将双引号放在变量扩展中,但仍然抛出错误。我在这里做错什么了。

Blade Templates
Layout
// Extend your theme layout
@extends('layouts.master')
// Start section
@section('title')
// End Section
@endsection
@parent
// Show section in your theme
@yield('name')
// Include view in your file
@include('view.name')
// Include view with pass data
@include('view.name', ['key' => 'value']);

root#cat my-sonar.properties

#!/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-services.input

sonar.host.url=http://localhost:9000/sonar/
sonar.login=sonar-token-string

下面是我看到的错误。

javaservice-one
javaservice-two

1 个答案:

答案 0 :(得分:0)

您可以在采购期间转移点(并在使用时更改代码):

source <(tr "." "_" < my-sonar.properties)
echo "${sonar_login}"

编辑: 该解决方案忽略了'='符号右边的任何点。这可以通过改善 来源<(sed':a; s / [。]([^ =] * =)/ _ \ 1 / g; ta'my-sonar.properties)

请注意,可以编辑属性文件的人还可以插入将在您的帐户下执行的unix命令。