Passing arguments to a function activated through an If-statement (BASH)









up vote
-1
down vote

favorite












I need to activate a function through an If-statement, and THEN pass arguments to the function.



In this example I want to delete customer 4 and 5 at the same time. Previously, before having the If-statement, I would use "delete_customers 4 5" to do this. Now, I need to first make a selection out of multiple functions, and THEN pass this argument to the function.



How would I go about ASKING for arguments, and then PASSING them to a function when I'm already in the script?



I've tried using read and then using the output as a variable and putting it after the name of the function when it is called, but that does not work.



SELECTION=$'Enter the number of the function you would like to use: n1. 
Delete customersnn'

read -p "$SELECTION"

if [ "$REPLY" == "1" ]; then
delete_customers
else
echo "Function does not exist"
fi


And the corresponding function:



delete_customers () 

inputFile="input.csv"
tempFile="temp.csv"
outputFile="output.csv"

for i in "$@";
do
awk -F ";" -v customerNr=$i '($1 != customerNR) print ' <input.csv> >
$tempFile && mv $tempFile "$inputFile"
done

mv "$inputFile" $outputFile



Sample input:



Customers
1
2
3
4
5


Sample output: (with argument 4 5)



Customers
1
2
3









share|improve this question

























    up vote
    -1
    down vote

    favorite












    I need to activate a function through an If-statement, and THEN pass arguments to the function.



    In this example I want to delete customer 4 and 5 at the same time. Previously, before having the If-statement, I would use "delete_customers 4 5" to do this. Now, I need to first make a selection out of multiple functions, and THEN pass this argument to the function.



    How would I go about ASKING for arguments, and then PASSING them to a function when I'm already in the script?



    I've tried using read and then using the output as a variable and putting it after the name of the function when it is called, but that does not work.



    SELECTION=$'Enter the number of the function you would like to use: n1. 
    Delete customersnn'

    read -p "$SELECTION"

    if [ "$REPLY" == "1" ]; then
    delete_customers
    else
    echo "Function does not exist"
    fi


    And the corresponding function:



    delete_customers () 

    inputFile="input.csv"
    tempFile="temp.csv"
    outputFile="output.csv"

    for i in "$@";
    do
    awk -F ";" -v customerNr=$i '($1 != customerNR) print ' <input.csv> >
    $tempFile && mv $tempFile "$inputFile"
    done

    mv "$inputFile" $outputFile



    Sample input:



    Customers
    1
    2
    3
    4
    5


    Sample output: (with argument 4 5)



    Customers
    1
    2
    3









    share|improve this question























      up vote
      -1
      down vote

      favorite









      up vote
      -1
      down vote

      favorite











      I need to activate a function through an If-statement, and THEN pass arguments to the function.



      In this example I want to delete customer 4 and 5 at the same time. Previously, before having the If-statement, I would use "delete_customers 4 5" to do this. Now, I need to first make a selection out of multiple functions, and THEN pass this argument to the function.



      How would I go about ASKING for arguments, and then PASSING them to a function when I'm already in the script?



      I've tried using read and then using the output as a variable and putting it after the name of the function when it is called, but that does not work.



      SELECTION=$'Enter the number of the function you would like to use: n1. 
      Delete customersnn'

      read -p "$SELECTION"

      if [ "$REPLY" == "1" ]; then
      delete_customers
      else
      echo "Function does not exist"
      fi


      And the corresponding function:



      delete_customers () 

      inputFile="input.csv"
      tempFile="temp.csv"
      outputFile="output.csv"

      for i in "$@";
      do
      awk -F ";" -v customerNr=$i '($1 != customerNR) print ' <input.csv> >
      $tempFile && mv $tempFile "$inputFile"
      done

      mv "$inputFile" $outputFile



      Sample input:



      Customers
      1
      2
      3
      4
      5


      Sample output: (with argument 4 5)



      Customers
      1
      2
      3









      share|improve this question













      I need to activate a function through an If-statement, and THEN pass arguments to the function.



      In this example I want to delete customer 4 and 5 at the same time. Previously, before having the If-statement, I would use "delete_customers 4 5" to do this. Now, I need to first make a selection out of multiple functions, and THEN pass this argument to the function.



      How would I go about ASKING for arguments, and then PASSING them to a function when I'm already in the script?



      I've tried using read and then using the output as a variable and putting it after the name of the function when it is called, but that does not work.



      SELECTION=$'Enter the number of the function you would like to use: n1. 
      Delete customersnn'

      read -p "$SELECTION"

      if [ "$REPLY" == "1" ]; then
      delete_customers
      else
      echo "Function does not exist"
      fi


      And the corresponding function:



      delete_customers () 

      inputFile="input.csv"
      tempFile="temp.csv"
      outputFile="output.csv"

      for i in "$@";
      do
      awk -F ";" -v customerNr=$i '($1 != customerNR) print ' <input.csv> >
      $tempFile && mv $tempFile "$inputFile"
      done

      mv "$inputFile" $outputFile



      Sample input:



      Customers
      1
      2
      3
      4
      5


      Sample output: (with argument 4 5)



      Customers
      1
      2
      3






      bash function unix arguments parameter-passing






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 20 hours ago









      Falco

      12




      12



























          active

          oldest

          votes











          Your Answer






          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: "1"
          ;
          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',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          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%2fstackoverflow.com%2fquestions%2f53224117%2fpassing-arguments-to-a-function-activated-through-an-if-statement-bash%23new-answer', 'question_page');

          );

          Post as a guest



































          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53224117%2fpassing-arguments-to-a-function-activated-through-an-if-statement-bash%23new-answer', 'question_page');

          );

          Post as a guest














































































          Popular posts from this blog

          Use pre created SQLite database for Android project in kotlin

          Darth Vader #20

          Ondo