【发布时间】:2014-03-02 17:32:27
【问题描述】:
我是 bash 脚本的新手,并且有一个关于在 bash 脚本中使用 .properties 文件中的属性的问题。
我见过一个使用'.'的 bash 属性文件。变量名之间,例如:
this.prop.one=someProperty
而且我已经看到它们是从如下脚本中调用的:
echo ${this.prop.one}
但是当我尝试设置这个属性时,我得到一个错误:
./test.sh: line 5: ${this.prop.one}: bad substitution
如果我不使用'.',我可以使用属性。在变量名中,并包含 props 文件:
#!/bin/bash
. test.properties
echo ${this_prop_one}
我真的很想能够使用 '.'在变量名中,并且,如果可能的话,不必包含 。 test.properties 在脚本中。
这可能吗?
更新:
感谢您的回答!那么,这很奇怪。我正在使用一个看起来像这样的 bash 脚本(glassfish 的服务):
#!/bin/bash
start() {
sudo ${glassfish.home.dir}/bin/asadmin start-domain domain1
}
...
...还有像这样的属性文件(build.properties):
# glassfish
glassfish.version=2.1
glassfish.home.dir=${app.install.dir}/${glassfish.target}
...
那么,一定有某种方法可以做到这一点吗?如果它们在属性文件中声明,它们是否可能不被定义为“变量”?再次感谢。
【问题讨论】:
-
@DigitalTrauma ...如果仅将其读取为引用环境变量,则这是重复的。如果目标只是能够使用这些变量(这就是我阅读问题的方式),还有其他方法可以存储它们将起作用。
-
@CharlesDuffy - 是的,这是解决这个问题的好方法 - 近距离投票被撤回。
-
@MattB,不,您现有的使用
${glassfish.home.dir}的脚本不是而且从来都不是有效的bash。我敢说它是别的东西——比如通过 Java 程序运行以创建 bash 脚本的模板。 -
@MattB ...顺便说一句,我试过用谷歌搜索你提供的代码,我唯一找到
sudo ${glassfish.home.dir}/bin/asadmin的地方就是这个问题本身。指向您找到它的位置的指针,以便分析上下文,会很有帮助。
标签: linux bash scripting properties-file