Maintaining several constants for several bash scripts












0















I have several individual bash scripts. They do different things, and are large (70-100 lines each). Thus I have kept them in separate files. But they are all related to a central problem and hence share several constant values in common.



So, for simplicity, I have ten constant variables, some are strings, some are numbers, while two are arrays, all of which need to be available throughout ten different bash scripts. How do I achieve this?



Note that while there is a central main.sh which can call these individual bash scripts, this won't always be the case. They can also be called directly from the command line (./script1.sh). Even in that case the variables should be made available to the scripts.



The only way I thought of was that to code in dev/script1.temp.sh files, and every time I need to run any file, I run a build.sh bash script that simply replaced (via grep) all occurrences of a particular constant ($CONSTANT) throughout the file to produce build/script1.sh.










share|improve this question









New contributor




Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • You could either set them as environment variables so they are the same across every executed script, or keep them all in a file which you parse during the start of every script. Which solution do you prefer? I'd suggest environment variables.

    – Panki
    13 hours ago
















0















I have several individual bash scripts. They do different things, and are large (70-100 lines each). Thus I have kept them in separate files. But they are all related to a central problem and hence share several constant values in common.



So, for simplicity, I have ten constant variables, some are strings, some are numbers, while two are arrays, all of which need to be available throughout ten different bash scripts. How do I achieve this?



Note that while there is a central main.sh which can call these individual bash scripts, this won't always be the case. They can also be called directly from the command line (./script1.sh). Even in that case the variables should be made available to the scripts.



The only way I thought of was that to code in dev/script1.temp.sh files, and every time I need to run any file, I run a build.sh bash script that simply replaced (via grep) all occurrences of a particular constant ($CONSTANT) throughout the file to produce build/script1.sh.










share|improve this question









New contributor




Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • You could either set them as environment variables so they are the same across every executed script, or keep them all in a file which you parse during the start of every script. Which solution do you prefer? I'd suggest environment variables.

    – Panki
    13 hours ago














0












0








0








I have several individual bash scripts. They do different things, and are large (70-100 lines each). Thus I have kept them in separate files. But they are all related to a central problem and hence share several constant values in common.



So, for simplicity, I have ten constant variables, some are strings, some are numbers, while two are arrays, all of which need to be available throughout ten different bash scripts. How do I achieve this?



Note that while there is a central main.sh which can call these individual bash scripts, this won't always be the case. They can also be called directly from the command line (./script1.sh). Even in that case the variables should be made available to the scripts.



The only way I thought of was that to code in dev/script1.temp.sh files, and every time I need to run any file, I run a build.sh bash script that simply replaced (via grep) all occurrences of a particular constant ($CONSTANT) throughout the file to produce build/script1.sh.










share|improve this question









New contributor




Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I have several individual bash scripts. They do different things, and are large (70-100 lines each). Thus I have kept them in separate files. But they are all related to a central problem and hence share several constant values in common.



So, for simplicity, I have ten constant variables, some are strings, some are numbers, while two are arrays, all of which need to be available throughout ten different bash scripts. How do I achieve this?



Note that while there is a central main.sh which can call these individual bash scripts, this won't always be the case. They can also be called directly from the command line (./script1.sh). Even in that case the variables should be made available to the scripts.



The only way I thought of was that to code in dev/script1.temp.sh files, and every time I need to run any file, I run a build.sh bash script that simply replaced (via grep) all occurrences of a particular constant ($CONSTANT) throughout the file to produce build/script1.sh.







bash shell-script






share|improve this question









New contributor




Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 14 hours ago









Rui F Ribeiro

39.5k1479132




39.5k1479132






New contributor




Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 14 hours ago









Gaurang TandonGaurang Tandon

1034




1034




New contributor




Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Gaurang Tandon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.













  • You could either set them as environment variables so they are the same across every executed script, or keep them all in a file which you parse during the start of every script. Which solution do you prefer? I'd suggest environment variables.

    – Panki
    13 hours ago



















  • You could either set them as environment variables so they are the same across every executed script, or keep them all in a file which you parse during the start of every script. Which solution do you prefer? I'd suggest environment variables.

    – Panki
    13 hours ago

















You could either set them as environment variables so they are the same across every executed script, or keep them all in a file which you parse during the start of every script. Which solution do you prefer? I'd suggest environment variables.

– Panki
13 hours ago





You could either set them as environment variables so they are the same across every executed script, or keep them all in a file which you parse during the start of every script. Which solution do you prefer? I'd suggest environment variables.

– Panki
13 hours ago










1 Answer
1






active

oldest

votes


















0














Put all the constants in a file, constants.env for example. And in all the scripts using any of those constants, put . constants.env to load them.



For example, constants.env:



HELLO=world


script.sh



#!/bin/bash
. constants.env
echo $HELLO


Executing the example:



$ ./script.sh 
world





share|improve this answer








New contributor




isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




















    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    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
    });


    }
    });






    Gaurang Tandon is a new contributor. Be nice, and check out our Code of Conduct.










    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f495082%2fmaintaining-several-constants-for-several-bash-scripts%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Put all the constants in a file, constants.env for example. And in all the scripts using any of those constants, put . constants.env to load them.



    For example, constants.env:



    HELLO=world


    script.sh



    #!/bin/bash
    . constants.env
    echo $HELLO


    Executing the example:



    $ ./script.sh 
    world





    share|improve this answer








    New contributor




    isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.

























      0














      Put all the constants in a file, constants.env for example. And in all the scripts using any of those constants, put . constants.env to load them.



      For example, constants.env:



      HELLO=world


      script.sh



      #!/bin/bash
      . constants.env
      echo $HELLO


      Executing the example:



      $ ./script.sh 
      world





      share|improve this answer








      New contributor




      isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.























        0












        0








        0







        Put all the constants in a file, constants.env for example. And in all the scripts using any of those constants, put . constants.env to load them.



        For example, constants.env:



        HELLO=world


        script.sh



        #!/bin/bash
        . constants.env
        echo $HELLO


        Executing the example:



        $ ./script.sh 
        world





        share|improve this answer








        New contributor




        isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.










        Put all the constants in a file, constants.env for example. And in all the scripts using any of those constants, put . constants.env to load them.



        For example, constants.env:



        HELLO=world


        script.sh



        #!/bin/bash
        . constants.env
        echo $HELLO


        Executing the example:



        $ ./script.sh 
        world






        share|improve this answer








        New contributor




        isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        share|improve this answer



        share|improve this answer






        New contributor




        isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        answered 10 hours ago









        isalgueiroisalgueiro

        25625




        25625




        New contributor




        isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





        New contributor





        isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






        isalgueiro is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






















            Gaurang Tandon is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            Gaurang Tandon is a new contributor. Be nice, and check out our Code of Conduct.













            Gaurang Tandon is a new contributor. Be nice, and check out our Code of Conduct.












            Gaurang Tandon is a new contributor. Be nice, and check out our Code of Conduct.
















            Thanks for contributing an answer to Unix & Linux 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%2funix.stackexchange.com%2fquestions%2f495082%2fmaintaining-several-constants-for-several-bash-scripts%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

            Loup dans la culture

            How to solve the problem of ntp “Unable to contact time server” from KDE?

            Connection limited (no internet access)