• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

How to read a .properties file through script

 
Ranch Hand
Posts: 123
  • Number of slices to send:
    Optional 'thank-you' note:
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
 
Saloon Keeper
Posts: 27871
196
  • 2
  • Number of slices to send:
    Optional 'thank-you' note:
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:
 
Greenhorn
Posts: 1
  • Number of slices to send:
    Optional 'thank-you' note:
You are ausome !!
 
Java Cowboy
Posts: 16084
88
  • Number of slices to send:
    Optional 'thank-you' note:
"java cousin", please check your private messages. You can see them by clicking My Private Messages.
 
Ranch Hand
Posts: 30
  • Number of slices to send:
    Optional 'thank-you' note:
This will require making properties file executable any other suggestions ?
 
sameer sood
Ranch Hand
Posts: 30
  • Number of slices to send:
    Optional 'thank-you' note:
PLease help

. filename

prints all on screen , anyway to stop it ??
 
Greenhorn
Posts: 4
  • Number of slices to send:
    Optional 'thank-you' note:

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
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
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
  • Number of slices to send:
    Optional 'thank-you' note:
Fair enough, and thanks reading!
 
Ranch Hand
Posts: 1923
  • Number of slices to send:
    Optional 'thank-you' note:

Yes, this is quick and dirty:

> fred of 42

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

 
Greenhorn
Posts: 1
  • Number of slices to send:
    Optional 'thank-you' note:

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!!!
 
Marshal
Posts: 79424
377
  • Number of slices to send:
    Optional 'thank-you' note:
Welcome to the Ranch MAC
 
Ranch Hand
Posts: 201
  • Number of slices to send:
    Optional 'thank-you' note:

[/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
  • Number of slices to send:
    Optional 'thank-you' note:

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?
 
Rancher
Posts: 1044
6
  • Number of slices to send:
    Optional 'thank-you' note:

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.


 
Greenhorn
Posts: 1
  • Number of slices to send:
    Optional 'thank-you' note:
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.



 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |