shell script to pass values properties file in java

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP












1















I have a properties file that looks like this:



mysql.username=USERNAME
mysql.pass=PASS


I need to change USERNAME and PASS with variable values passed to shell script. I cannot use sed since that will work fine the first time to replace USERNAME and PASS with "values" but once they are replaced, sed will not find the variable names in the file the second time the script runs and thus an issue.



How can this be handled?










share|improve this question


























    1















    I have a properties file that looks like this:



    mysql.username=USERNAME
    mysql.pass=PASS


    I need to change USERNAME and PASS with variable values passed to shell script. I cannot use sed since that will work fine the first time to replace USERNAME and PASS with "values" but once they are replaced, sed will not find the variable names in the file the second time the script runs and thus an issue.



    How can this be handled?










    share|improve this question
























      1












      1








      1








      I have a properties file that looks like this:



      mysql.username=USERNAME
      mysql.pass=PASS


      I need to change USERNAME and PASS with variable values passed to shell script. I cannot use sed since that will work fine the first time to replace USERNAME and PASS with "values" but once they are replaced, sed will not find the variable names in the file the second time the script runs and thus an issue.



      How can this be handled?










      share|improve this question














      I have a properties file that looks like this:



      mysql.username=USERNAME
      mysql.pass=PASS


      I need to change USERNAME and PASS with variable values passed to shell script. I cannot use sed since that will work fine the first time to replace USERNAME and PASS with "values" but once they are replaced, sed will not find the variable names in the file the second time the script runs and thus an issue.



      How can this be handled?







      shell-script bash






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 15 at 10:28









      Simran kaurSimran kaur

      1063




      1063




















          4 Answers
          4






          active

          oldest

          votes


















          1














          You can obtain old parameters from the properties file before using sed, e.g.



          # get old parameters
          $ export oldUsername=$(grep mysql.username $FILE | cut -d'=' -f2)
          $ export oldPass=$(grep mysql.pass $FILE | cut -d'=' -f2)

          # set new parameters
          $ export newUsername=NEW_USERNAME
          $ export newPass=NEW_PASS

          # change parameters
          $ sed -i "s/$oldUsername/$newUsername/g" $FILE
          $ sed -i "s/$oldPass/$newPass/g" $FILE





          share|improve this answer






























            1














            You can use below.



            [user@xyz ~]$ hh='mysql.username=USERNAME';echo $hh | awk -F"=" 'OFS=FS $2="Mango"; print '
            mysql.username=Mango





            share|improve this answer


















            • 1





              It would be nice if you could break down each section of the command. This would help people less experienced in bash and possibly help them fix similar problems in the future based on what they learn here.

              – Levi
              Mar 17 at 2:21


















            1














            You should regenerate this file from a template using your configuration management system of choice.



            You could also write a shell script that uses a heredoc to do the same thing. But since we're in DevOps-land you really should be using your configuration management system for these things.






            share|improve this answer






























              0














              Maybe, this is something you can try - in sed they are known as back-references:



              $1 - is the value passed for username



              $2 - is the value passed for password



              1 captures the back reference within ( and )



              sed -i "s/(mysql.username=).*/1$1" propertiesfile
              sed -i "s/(mysql.pass=).*/1$2" propertiesfile





              share|improve this answer























                Your Answer








                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "674"
                ;
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function()
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled)
                StackExchange.using("snippets", function()
                createEditor();
                );

                else
                createEditor();

                );

                function createEditor()
                StackExchange.prepareEditor(
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                imageUploader:
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                ,
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                draft saved

                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdevops.stackexchange.com%2fquestions%2f6615%2fshell-script-to-pass-values-properties-file-in-java%23new-answer', 'question_page');

                );

                Post as a guest















                Required, but never shown

























                4 Answers
                4






                active

                oldest

                votes








                4 Answers
                4






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                1














                You can obtain old parameters from the properties file before using sed, e.g.



                # get old parameters
                $ export oldUsername=$(grep mysql.username $FILE | cut -d'=' -f2)
                $ export oldPass=$(grep mysql.pass $FILE | cut -d'=' -f2)

                # set new parameters
                $ export newUsername=NEW_USERNAME
                $ export newPass=NEW_PASS

                # change parameters
                $ sed -i "s/$oldUsername/$newUsername/g" $FILE
                $ sed -i "s/$oldPass/$newPass/g" $FILE





                share|improve this answer



























                  1














                  You can obtain old parameters from the properties file before using sed, e.g.



                  # get old parameters
                  $ export oldUsername=$(grep mysql.username $FILE | cut -d'=' -f2)
                  $ export oldPass=$(grep mysql.pass $FILE | cut -d'=' -f2)

                  # set new parameters
                  $ export newUsername=NEW_USERNAME
                  $ export newPass=NEW_PASS

                  # change parameters
                  $ sed -i "s/$oldUsername/$newUsername/g" $FILE
                  $ sed -i "s/$oldPass/$newPass/g" $FILE





                  share|improve this answer

























                    1












                    1








                    1







                    You can obtain old parameters from the properties file before using sed, e.g.



                    # get old parameters
                    $ export oldUsername=$(grep mysql.username $FILE | cut -d'=' -f2)
                    $ export oldPass=$(grep mysql.pass $FILE | cut -d'=' -f2)

                    # set new parameters
                    $ export newUsername=NEW_USERNAME
                    $ export newPass=NEW_PASS

                    # change parameters
                    $ sed -i "s/$oldUsername/$newUsername/g" $FILE
                    $ sed -i "s/$oldPass/$newPass/g" $FILE





                    share|improve this answer













                    You can obtain old parameters from the properties file before using sed, e.g.



                    # get old parameters
                    $ export oldUsername=$(grep mysql.username $FILE | cut -d'=' -f2)
                    $ export oldPass=$(grep mysql.pass $FILE | cut -d'=' -f2)

                    # set new parameters
                    $ export newUsername=NEW_USERNAME
                    $ export newPass=NEW_PASS

                    # change parameters
                    $ sed -i "s/$oldUsername/$newUsername/g" $FILE
                    $ sed -i "s/$oldPass/$newPass/g" $FILE






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Mar 15 at 11:33









                    Pavel StroitelevPavel Stroitelev

                    112




                    112





















                        1














                        You can use below.



                        [user@xyz ~]$ hh='mysql.username=USERNAME';echo $hh | awk -F"=" 'OFS=FS $2="Mango"; print '
                        mysql.username=Mango





                        share|improve this answer


















                        • 1





                          It would be nice if you could break down each section of the command. This would help people less experienced in bash and possibly help them fix similar problems in the future based on what they learn here.

                          – Levi
                          Mar 17 at 2:21















                        1














                        You can use below.



                        [user@xyz ~]$ hh='mysql.username=USERNAME';echo $hh | awk -F"=" 'OFS=FS $2="Mango"; print '
                        mysql.username=Mango





                        share|improve this answer


















                        • 1





                          It would be nice if you could break down each section of the command. This would help people less experienced in bash and possibly help them fix similar problems in the future based on what they learn here.

                          – Levi
                          Mar 17 at 2:21













                        1












                        1








                        1







                        You can use below.



                        [user@xyz ~]$ hh='mysql.username=USERNAME';echo $hh | awk -F"=" 'OFS=FS $2="Mango"; print '
                        mysql.username=Mango





                        share|improve this answer













                        You can use below.



                        [user@xyz ~]$ hh='mysql.username=USERNAME';echo $hh | awk -F"=" 'OFS=FS $2="Mango"; print '
                        mysql.username=Mango






                        share|improve this answer












                        share|improve this answer



                        share|improve this answer










                        answered Mar 15 at 11:42









                        againagain

                        1191




                        1191







                        • 1





                          It would be nice if you could break down each section of the command. This would help people less experienced in bash and possibly help them fix similar problems in the future based on what they learn here.

                          – Levi
                          Mar 17 at 2:21












                        • 1





                          It would be nice if you could break down each section of the command. This would help people less experienced in bash and possibly help them fix similar problems in the future based on what they learn here.

                          – Levi
                          Mar 17 at 2:21







                        1




                        1





                        It would be nice if you could break down each section of the command. This would help people less experienced in bash and possibly help them fix similar problems in the future based on what they learn here.

                        – Levi
                        Mar 17 at 2:21





                        It would be nice if you could break down each section of the command. This would help people less experienced in bash and possibly help them fix similar problems in the future based on what they learn here.

                        – Levi
                        Mar 17 at 2:21











                        1














                        You should regenerate this file from a template using your configuration management system of choice.



                        You could also write a shell script that uses a heredoc to do the same thing. But since we're in DevOps-land you really should be using your configuration management system for these things.






                        share|improve this answer



























                          1














                          You should regenerate this file from a template using your configuration management system of choice.



                          You could also write a shell script that uses a heredoc to do the same thing. But since we're in DevOps-land you really should be using your configuration management system for these things.






                          share|improve this answer

























                            1












                            1








                            1







                            You should regenerate this file from a template using your configuration management system of choice.



                            You could also write a shell script that uses a heredoc to do the same thing. But since we're in DevOps-land you really should be using your configuration management system for these things.






                            share|improve this answer













                            You should regenerate this file from a template using your configuration management system of choice.



                            You could also write a shell script that uses a heredoc to do the same thing. But since we're in DevOps-land you really should be using your configuration management system for these things.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Mar 15 at 14:10









                            chickschicks

                            1,1391523




                            1,1391523





















                                0














                                Maybe, this is something you can try - in sed they are known as back-references:



                                $1 - is the value passed for username



                                $2 - is the value passed for password



                                1 captures the back reference within ( and )



                                sed -i "s/(mysql.username=).*/1$1" propertiesfile
                                sed -i "s/(mysql.pass=).*/1$2" propertiesfile





                                share|improve this answer



























                                  0














                                  Maybe, this is something you can try - in sed they are known as back-references:



                                  $1 - is the value passed for username



                                  $2 - is the value passed for password



                                  1 captures the back reference within ( and )



                                  sed -i "s/(mysql.username=).*/1$1" propertiesfile
                                  sed -i "s/(mysql.pass=).*/1$2" propertiesfile





                                  share|improve this answer

























                                    0












                                    0








                                    0







                                    Maybe, this is something you can try - in sed they are known as back-references:



                                    $1 - is the value passed for username



                                    $2 - is the value passed for password



                                    1 captures the back reference within ( and )



                                    sed -i "s/(mysql.username=).*/1$1" propertiesfile
                                    sed -i "s/(mysql.pass=).*/1$2" propertiesfile





                                    share|improve this answer













                                    Maybe, this is something you can try - in sed they are known as back-references:



                                    $1 - is the value passed for username



                                    $2 - is the value passed for password



                                    1 captures the back reference within ( and )



                                    sed -i "s/(mysql.username=).*/1$1" propertiesfile
                                    sed -i "s/(mysql.pass=).*/1$2" propertiesfile






                                    share|improve this answer












                                    share|improve this answer



                                    share|improve this answer










                                    answered Mar 18 at 3:46









                                    rebelutionrebelution

                                    284




                                    284



























                                        draft saved

                                        draft discarded
















































                                        Thanks for contributing an answer to DevOps Stack Exchange!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid


                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.

                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function ()
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdevops.stackexchange.com%2fquestions%2f6615%2fshell-script-to-pass-values-properties-file-in-java%23new-answer', 'question_page');

                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown






                                        Popular posts from this blog

                                        How to check contact read email or not when send email to Individual?

                                        Displaying single band from multi-band raster using QGIS

                                        How many registers does an x86_64 CPU actually have?