This week's giveaway is in the Spring forum.
We're giving away four copies of Learn Spring Security (video course) and have Eugen Paraschiv on-line!
See this thread for details.
Win a copy of Learn Spring Security (video course) this week in the Spring forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

How to read a .properties file through script

 
rahulJ james
Ranch Hand
Posts: 123
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
Tim Holloway
Saloon Keeper
Pie
Posts: 17989
47
Android Eclipse IDE Linux
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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:
 
java cousin
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You are ausome !!
 
Jesper de Jong
Java Cowboy
Saloon Keeper
Posts: 15205
36
Android IntelliJ IDE Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
"java cousin", please check your private messages. You can see them by clicking My Private Messages.
 
sameer sood
Ranch Hand
Posts: 30
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This will require making properties file executable any other suggestions ?
 
sameer sood
Ranch Hand
Posts: 30
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
PLease help

. filename

prints all on screen , anyway to stop it ??
 
Joshua Davis
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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

 
Tim Holloway
Saloon Keeper
Pie
Posts: 17989
47
Android Eclipse IDE Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.


 
Joshua Davis
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Fair enough, and thanks reading!
 
Stefan Wagner
Ranch Hand
Posts: 1923
Linux Postgres Database Scala
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Yes, this is quick and dirty:

> fred of 42

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

 
Miguel Angel Casanova
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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!!!
 
Campbell Ritchie
Sheriff
Posts: 48363
56
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Welcome to the Ranch MAC
 
Jay Dilla
Ranch Hand
Posts: 201
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

[/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?
 
Joshua Davis
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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?
 
Ivan Jozsef Balazs
Rancher
Posts: 972
5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.


 
Joe Maisel
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.



 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic