Pure bash program for auto-filling a template file with ENV variables The Next CEO of Stack Overflow'find' template for handling any fileBash to find all placeholder variables in a file and replace will real variablesapt alternative for proxy environment with bash shellBash script to replace substrings in a file with stringsSLOC Counter Script OptimizationLocating the Bash history file for a userDaemonizing shell scripts - MqSHBASH correct usage of single/double quotes when writing variables to filebash script - sed - template file processingBash function to find contents of a file with a certain extension

Chain wire methods together in Lightning Web Components

Are police here, aren't itthey?

Won the lottery - how do I keep the money?

Why do remote US companies require working in the US?

Would a grinding machine be a simple and workable propulsion system for an interplanetary spacecraft?

Legal workarounds for testamentary trust perceived as unfair

Why doesn't UK go for the same deal Japan has with EU to resolve Brexit?

Running a General Election and the European Elections together

Is wanting to ask what to write an indication that you need to change your story?

WOW air has ceased operation, can I get my tickets refunded?

Poetry, calligrams and TikZ/PStricks challenge

What did we know about the Kessel run before the prequels?

Is it possible to replace duplicates of a character with one character using tr

Math-accent symbol over parentheses enclosing accented symbol (amsmath)

How to get from Geneva Airport to Metabief, Doubs, France by public transport?

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis

Domestic-to-international connection at Orlando (MCO)

What does "Its cash flow is deeply negative" mean?

Is micro rebar a better way to reinforce concrete than rebar?

Is there a difference between "Fahrstuhl" and "Aufzug"

A Man With a Stainless Steel Endoskeleton (like The Terminator) Fighting Cloaked Aliens Only He Can See

Should I tutor a student who I know has cheated on their homework?

Calculator final project in Python



Pure bash program for auto-filling a template file with ENV variables



The Next CEO of Stack Overflow'find' template for handling any fileBash to find all placeholder variables in a file and replace will real variablesapt alternative for proxy environment with bash shellBash script to replace substrings in a file with stringsSLOC Counter Script OptimizationLocating the Bash history file for a userDaemonizing shell scripts - MqSHBASH correct usage of single/double quotes when writing variables to filebash script - sed - template file processingBash function to find contents of a file with a certain extension










1












$begingroup$


Goal of Program



Consider a template file template.txt with double brace variables, intended to be replaced by values:



hello there MY_VAR1 
some other stuff
some other stuff
foo: MY_VAR2
MY_VAR2 is the value of MY_VAR2


and assume you have defined and exported those variables:



export MY_VAR1=val1
export MY_VAR2=val2


we want a script fill_template such that fill_template template.txt produces:



hello there val1
some other stuff
some other stuff
foo: val2
val2 is the value of MY_VAR2


and which gives an appropriate error message if any of the required template variables are not defined.



Code for review



Here is working code for fill_template:



#!/bin/bash

if [[ ! -f $1 ]]; then
>&2 echo "Usage: $0 <filename>"
exit 1
fi

# Gather all the required template variables

vars=()
while IFS= read -r line; do
vars+=( "$line" )
done < <( awk 'match($0, / (.*) /, a) print a[1] ' "$1" | sort -u )

# Verify that all template variables are set and exported

missing=()
for var in "$vars[@]"; do
if [[ -z $!var+x ]]; then
missing+=( "$var" )
fi
done

if [[ $#missing[@] -gt 0 ]]; then
>&2 echo "The following required variables have not been set and exported:"
for var in "$missing[@]"; do
>&2 echo "$var"
done
exit 1
fi

# Dynamically construct the sed cmd to do the replacement

sed_cmd=
for var in "$vars[@]"; do
sed_cmd+="s/\\ *$var */$!var/g;"
done

sed -E "$sed_cmd" "$1"


Notes



  • All comments welcome, from the high-level approach to nitpicks.

  • Currently we assume there will be only one TEMPLATE_VAR per line








share









$endgroup$
















    1












    $begingroup$


    Goal of Program



    Consider a template file template.txt with double brace variables, intended to be replaced by values:



    hello there MY_VAR1 
    some other stuff
    some other stuff
    foo: MY_VAR2
    MY_VAR2 is the value of MY_VAR2


    and assume you have defined and exported those variables:



    export MY_VAR1=val1
    export MY_VAR2=val2


    we want a script fill_template such that fill_template template.txt produces:



    hello there val1
    some other stuff
    some other stuff
    foo: val2
    val2 is the value of MY_VAR2


    and which gives an appropriate error message if any of the required template variables are not defined.



    Code for review



    Here is working code for fill_template:



    #!/bin/bash

    if [[ ! -f $1 ]]; then
    >&2 echo "Usage: $0 <filename>"
    exit 1
    fi

    # Gather all the required template variables

    vars=()
    while IFS= read -r line; do
    vars+=( "$line" )
    done < <( awk 'match($0, / (.*) /, a) print a[1] ' "$1" | sort -u )

    # Verify that all template variables are set and exported

    missing=()
    for var in "$vars[@]"; do
    if [[ -z $!var+x ]]; then
    missing+=( "$var" )
    fi
    done

    if [[ $#missing[@] -gt 0 ]]; then
    >&2 echo "The following required variables have not been set and exported:"
    for var in "$missing[@]"; do
    >&2 echo "$var"
    done
    exit 1
    fi

    # Dynamically construct the sed cmd to do the replacement

    sed_cmd=
    for var in "$vars[@]"; do
    sed_cmd+="s/\\ *$var */$!var/g;"
    done

    sed -E "$sed_cmd" "$1"


    Notes



    • All comments welcome, from the high-level approach to nitpicks.

    • Currently we assume there will be only one TEMPLATE_VAR per line








    share









    $endgroup$














      1












      1








      1





      $begingroup$


      Goal of Program



      Consider a template file template.txt with double brace variables, intended to be replaced by values:



      hello there MY_VAR1 
      some other stuff
      some other stuff
      foo: MY_VAR2
      MY_VAR2 is the value of MY_VAR2


      and assume you have defined and exported those variables:



      export MY_VAR1=val1
      export MY_VAR2=val2


      we want a script fill_template such that fill_template template.txt produces:



      hello there val1
      some other stuff
      some other stuff
      foo: val2
      val2 is the value of MY_VAR2


      and which gives an appropriate error message if any of the required template variables are not defined.



      Code for review



      Here is working code for fill_template:



      #!/bin/bash

      if [[ ! -f $1 ]]; then
      >&2 echo "Usage: $0 <filename>"
      exit 1
      fi

      # Gather all the required template variables

      vars=()
      while IFS= read -r line; do
      vars+=( "$line" )
      done < <( awk 'match($0, / (.*) /, a) print a[1] ' "$1" | sort -u )

      # Verify that all template variables are set and exported

      missing=()
      for var in "$vars[@]"; do
      if [[ -z $!var+x ]]; then
      missing+=( "$var" )
      fi
      done

      if [[ $#missing[@] -gt 0 ]]; then
      >&2 echo "The following required variables have not been set and exported:"
      for var in "$missing[@]"; do
      >&2 echo "$var"
      done
      exit 1
      fi

      # Dynamically construct the sed cmd to do the replacement

      sed_cmd=
      for var in "$vars[@]"; do
      sed_cmd+="s/\\ *$var */$!var/g;"
      done

      sed -E "$sed_cmd" "$1"


      Notes



      • All comments welcome, from the high-level approach to nitpicks.

      • Currently we assume there will be only one TEMPLATE_VAR per line








      share









      $endgroup$




      Goal of Program



      Consider a template file template.txt with double brace variables, intended to be replaced by values:



      hello there MY_VAR1 
      some other stuff
      some other stuff
      foo: MY_VAR2
      MY_VAR2 is the value of MY_VAR2


      and assume you have defined and exported those variables:



      export MY_VAR1=val1
      export MY_VAR2=val2


      we want a script fill_template such that fill_template template.txt produces:



      hello there val1
      some other stuff
      some other stuff
      foo: val2
      val2 is the value of MY_VAR2


      and which gives an appropriate error message if any of the required template variables are not defined.



      Code for review



      Here is working code for fill_template:



      #!/bin/bash

      if [[ ! -f $1 ]]; then
      >&2 echo "Usage: $0 <filename>"
      exit 1
      fi

      # Gather all the required template variables

      vars=()
      while IFS= read -r line; do
      vars+=( "$line" )
      done < <( awk 'match($0, / (.*) /, a) print a[1] ' "$1" | sort -u )

      # Verify that all template variables are set and exported

      missing=()
      for var in "$vars[@]"; do
      if [[ -z $!var+x ]]; then
      missing+=( "$var" )
      fi
      done

      if [[ $#missing[@] -gt 0 ]]; then
      >&2 echo "The following required variables have not been set and exported:"
      for var in "$missing[@]"; do
      >&2 echo "$var"
      done
      exit 1
      fi

      # Dynamically construct the sed cmd to do the replacement

      sed_cmd=
      for var in "$vars[@]"; do
      sed_cmd+="s/\\ *$var */$!var/g;"
      done

      sed -E "$sed_cmd" "$1"


      Notes



      • All comments welcome, from the high-level approach to nitpicks.

      • Currently we assume there will be only one TEMPLATE_VAR per line






      bash





      share












      share










      share



      share










      asked 4 mins ago









      JonahJonah

      3,439717




      3,439717




















          0






          active

          oldest

          votes












          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          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%2fcodereview.stackexchange.com%2fquestions%2f216569%2fpure-bash-program-for-auto-filling-a-template-file-with-env-variables%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Code Review 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.

          Use MathJax to format equations. MathJax reference.


          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%2fcodereview.stackexchange.com%2fquestions%2f216569%2fpure-bash-program-for-auto-filling-a-template-file-with-env-variables%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

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

          Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar