aspose file tools*
The moose likes Linux / UNIX and the fly likes How to read a  .properties file through script Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » Linux / UNIX
Bookmark "How to read a  .properties file through script" Watch "How to read a  .properties file through script" New topic
Author

How to read a .properties file through script

rahulJ james
Ranch Hand

Joined: Oct 03, 2008
Posts: 123
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

Joined: Jun 25, 2001
Posts: 15641
    
  15

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:


Customer surveys are for companies who didn't pay proper attention to begin with.
java cousin
Greenhorn

Joined: Jan 14, 2009
Posts: 1
You are ausome !!
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 13875
    
  10

"java cousin", please check your private messages. You can see them by clicking My Private Messages.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
sameer sood
Ranch Hand

Joined: Dec 05, 2007
Posts: 30
This will require making properties file executable any other suggestions ?


Sameer Sood
SCJP 1.5 (93%), SCWCD 1.5 (95%)
sameer sood
Ranch Hand

Joined: Dec 05, 2007
Posts: 30
PLease help

. filename

prints all on screen , anyway to stop it ??
Joshua Davis
Greenhorn

Joined: Nov 26, 2010
Posts: 4
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

Joined: Jun 25, 2001
Posts: 15641
    
  15

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

Joined: Nov 26, 2010
Posts: 4
Fair enough, and thanks reading!
Stefan Wagner
Ranch Hand

Joined: Jun 02, 2003
Posts: 1923


Yes, this is quick and dirty:

> fred of 42

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


http://home.arcor.de/hirnstrom/bewerbung
Miguel Angel Casanova
Greenhorn

Joined: May 24, 2011
Posts: 1
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

Joined: Oct 13, 2005
Posts: 36508
    
  16
Welcome to the Ranch MAC
Jay Dilla
Ranch Hand

Joined: Aug 12, 2004
Posts: 199

[/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

Joined: Nov 26, 2010
Posts: 4
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

Joined: May 22, 2012
Posts: 865
    
    5
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

Joined: Apr 30, 2009
Posts: 1
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.



 
It is sorta covered in the JavaRanch Style Guide.
 
subject: How to read a .properties file through script
 
Similar Threads
question on EL
doubt in properties
reading from a properties file
How to set default argument value when using Spring constructor injection
save properties file without affecting existing comments.