Forums Register Login

How to read a .properties file through script

+Pie Number of slices to send: Send
I have a appl.properties file with a key value pair. I just wanted to use 2 values from the properties file in my script.

Assume I have name=jack and age=50 in my appl.properties file and in my script I have variables with values like #name# and #age#.

I have to get the value of the key "name" and "age" from the properties file and replace the strings #name# and #age# which I have it in my script.

Can anyone advise
2
+Pie Number of slices to send: Send
The easy way to do it is to note that a Java properties file has the same format as a basic shell script.

However, there's a trick to it. If you just run the properties file like so:

sh appl.properties

The assignments will be made at the sub-level, then discarded when the properties file (script) ends execution.

So to get the properties in a calling script, you need to use the "source" command:

. appl.properties

Note that the space after the initial dot is very important!

To reference shell variable assignments, you use the "$" to indicate variable substitution.

So, to put it all together:
+Pie Number of slices to send: Send
You are ausome !!
+Pie Number of slices to send: Send
"java cousin", please check your private messages. You can see them by clicking My Private Messages.
+Pie Number of slices to send: Send
This will require making properties file executable any other suggestions ?
+Pie Number of slices to send: Send
PLease help

. filename

prints all on screen , anyway to stop it ??
+Pie Number of slices to send: Send
 

Tim Holloway wrote:The easy way to do it is to note that a Java properties file has the same format as a basic shell script.

However, there's a trick to it. If you just run the properties file like so:

sh appl.properties

The assignments will be made at the sub-level, then discarded when the properties file (script) ends execution.

So to get the properties in a calling script, you need to use the "source" command:

. appl.properties

Note that the space after the initial dot is very important!

To reference shell variable assignments, you use the "$" to indicate variable substitution.

So, to put it all together:



This solution is good because it's simple, but it will only work if you have Java properties file that doesn't have any property names or values that have special characters (to shell) in them. For example, if there is a property with a '.' in the name, then this solution won't work. That's the case for most Java properties files I've used, especially those used with ANT.

Here is a properties file that Java can read, but bash can't:


The second property is going to cause problems because it has a dot in the name, as well as having spaces in the value. Java and ANT can read this in just fine, but bash can't:



Here are a few solutions that are a little more robust: http://shrubbery.mynetgear.net/c/display/W/Reading+Java-style+Properties+Files+with+Shell

+Pie Number of slices to send: Send
Welcome to the CodeRanch, Joshua!

You're quite correct, and that page is a very useful resource.

It does, however, leave out 1 important method:



When I use a properties file in the shell, I normally only put the coarsest properties in that file (which may include paths to finer-grade properties that the Java code itself reads). So it's no particular hardship to follow that rule. For me, anyway.


+Pie Number of slices to send: Send
Fair enough, and thanks reading!
+Pie Number of slices to send: Send

Yes, this is quick and dirty:

> fred of 42

If age=$(rm -rf /), you loose, or name=Bobby$(psql pupil -c "DROP TABLE user").

+Pie Number of slices to send: Send
 

Tim Holloway wrote:The easy way to do it is to note that a Java properties file has the same format as a basic shell script.

However, there's a trick to it. If you just run the properties file like so:

sh appl.properties

The assignments will be made at the sub-level, then discarded when the properties file (script) ends execution.

So to get the properties in a calling script, you need to use the "source" command:

. appl.properties

Note that the space after the initial dot is very important!

To reference shell variable assignments, you use the "$" to indicate variable substitution.

So, to put it all together:



Thank you!!!
+Pie Number of slices to send: Send
Welcome to the Ranch MAC
+Pie Number of slices to send: Send

[/code]

Here are a few solutions that are a little more robust: http://shrubbery.mynetgear.net/c/display/W/Reading+Java-style+Properties+Files+with+Shell



this is not working for me
what type of shell does this work with?
+Pie Number of slices to send: Send
 

Jay Dilla wrote:
[/code]

Here are a few solutions that are a little more robust: http://shrubbery.mynetgear.net/c/display/W/Reading+Java-style+Properties+Files+with+Shell



this is not working for me
what type of shell does this work with?

It's bash. I've tested this on various Linux distros and Cygwin.

What, exactly is the problem you're having?
+Pie Number of slices to send: Send
 

sameer sood wrote:This will require making properties file executable



No.

The . (source-in) operation dot does not need the file to be executable: readability suffices.


+Pie Number of slices to send: Send
This is an old topic, but here's the solution I ended up using.


cat properties.file | sed 's/\./_/g' > .properties.file
. .properties.file
rm .properties.file

Use sed to replace "."s with "_"s, save as a new file, read it in, then delete it. You may not want or need to delete it based on your circumstance.

Now all the properties are available as environment variables with the "." chars replaced by "_" chars.



I'm gonna teach you a lesson! Start by looking at this tiny ad:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 138374 times.
Similar Threads
How to replace first occurence of a string in another string
Changing property file values dynamically using struts
Changing property file values dynamically using struts
question on EL
Unused Keys
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 04:29:36.