How do I add a variable to this curl command?

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












7















I have a curl command that sends a string of text to the server and I've been trying to figure out how to either have the string of text come from a file or from a bash variable. The command looks like this:



curl -X POST -u "apikey:<apikey>"
--header "Content-Type: application/json"
--data '"text": "<variable>"'
"<url>"


I can't figure out how to get a variable in there. I've tried replacing with $variable and $(< file) but I don't know how to get those to spit out text without an echo and I can't echo in a curl.










share|improve this question




























    7















    I have a curl command that sends a string of text to the server and I've been trying to figure out how to either have the string of text come from a file or from a bash variable. The command looks like this:



    curl -X POST -u "apikey:<apikey>"
    --header "Content-Type: application/json"
    --data '"text": "<variable>"'
    "<url>"


    I can't figure out how to get a variable in there. I've tried replacing with $variable and $(< file) but I don't know how to get those to spit out text without an echo and I can't echo in a curl.










    share|improve this question


























      7












      7








      7


      1






      I have a curl command that sends a string of text to the server and I've been trying to figure out how to either have the string of text come from a file or from a bash variable. The command looks like this:



      curl -X POST -u "apikey:<apikey>"
      --header "Content-Type: application/json"
      --data '"text": "<variable>"'
      "<url>"


      I can't figure out how to get a variable in there. I've tried replacing with $variable and $(< file) but I don't know how to get those to spit out text without an echo and I can't echo in a curl.










      share|improve this question
















      I have a curl command that sends a string of text to the server and I've been trying to figure out how to either have the string of text come from a file or from a bash variable. The command looks like this:



      curl -X POST -u "apikey:<apikey>"
      --header "Content-Type: application/json"
      --data '"text": "<variable>"'
      "<url>"


      I can't figure out how to get a variable in there. I've tried replacing with $variable and $(< file) but I don't know how to get those to spit out text without an echo and I can't echo in a curl.







      linux bash curl






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 3 at 7:25









      Rui F Ribeiro

      41.8k1483142




      41.8k1483142










      asked Mar 3 at 7:22









      NelloDrawsNelloDraws

      384




      384




















          3 Answers
          3






          active

          oldest

          votes


















          10














          Stop the single quoted string, follow with the variable expansion, posibly double quoted, and resume the single quoted string:



          --data '"text": "'"$variable"'"'


          ($variable should still expand to something that together with the surroundings forms legal JSON, or else the other side probably won't be very happy :) .)






          share|improve this answer




















          • 3





            This works thanks! And in hindsight it makes sense

            – NelloDraws
            Mar 3 at 7:38


















          5














          Just to put one more solution here:



          curl -X POST -u "apikey:$apikey"
          --header "Content-Type: application/json"
          --data ""text": "$variable""
          "$url"


          Basically, " is a quote to handle the following string together, " escapes the quote, and $varname is a variable.






          share|improve this answer
































            4














            I tend to use heredocs when building JSON for use with curl:



            curl -s -X POST $URL -d@- <<EOF
            [

            "id": 101,
            "text": "$variable"

            ]
            EOF





            share|improve this answer























              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
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f504057%2fhow-do-i-add-a-variable-to-this-curl-command%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              10














              Stop the single quoted string, follow with the variable expansion, posibly double quoted, and resume the single quoted string:



              --data '"text": "'"$variable"'"'


              ($variable should still expand to something that together with the surroundings forms legal JSON, or else the other side probably won't be very happy :) .)






              share|improve this answer




















              • 3





                This works thanks! And in hindsight it makes sense

                – NelloDraws
                Mar 3 at 7:38















              10














              Stop the single quoted string, follow with the variable expansion, posibly double quoted, and resume the single quoted string:



              --data '"text": "'"$variable"'"'


              ($variable should still expand to something that together with the surroundings forms legal JSON, or else the other side probably won't be very happy :) .)






              share|improve this answer




















              • 3





                This works thanks! And in hindsight it makes sense

                – NelloDraws
                Mar 3 at 7:38













              10












              10








              10







              Stop the single quoted string, follow with the variable expansion, posibly double quoted, and resume the single quoted string:



              --data '"text": "'"$variable"'"'


              ($variable should still expand to something that together with the surroundings forms legal JSON, or else the other side probably won't be very happy :) .)






              share|improve this answer















              Stop the single quoted string, follow with the variable expansion, posibly double quoted, and resume the single quoted string:



              --data '"text": "'"$variable"'"'


              ($variable should still expand to something that together with the surroundings forms legal JSON, or else the other side probably won't be very happy :) .)







              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Mar 3 at 7:37

























              answered Mar 3 at 7:30









              PSkocikPSkocik

              18.4k553100




              18.4k553100







              • 3





                This works thanks! And in hindsight it makes sense

                – NelloDraws
                Mar 3 at 7:38












              • 3





                This works thanks! And in hindsight it makes sense

                – NelloDraws
                Mar 3 at 7:38







              3




              3





              This works thanks! And in hindsight it makes sense

              – NelloDraws
              Mar 3 at 7:38





              This works thanks! And in hindsight it makes sense

              – NelloDraws
              Mar 3 at 7:38













              5














              Just to put one more solution here:



              curl -X POST -u "apikey:$apikey"
              --header "Content-Type: application/json"
              --data ""text": "$variable""
              "$url"


              Basically, " is a quote to handle the following string together, " escapes the quote, and $varname is a variable.






              share|improve this answer





























                5














                Just to put one more solution here:



                curl -X POST -u "apikey:$apikey"
                --header "Content-Type: application/json"
                --data ""text": "$variable""
                "$url"


                Basically, " is a quote to handle the following string together, " escapes the quote, and $varname is a variable.






                share|improve this answer



























                  5












                  5








                  5







                  Just to put one more solution here:



                  curl -X POST -u "apikey:$apikey"
                  --header "Content-Type: application/json"
                  --data ""text": "$variable""
                  "$url"


                  Basically, " is a quote to handle the following string together, " escapes the quote, and $varname is a variable.






                  share|improve this answer















                  Just to put one more solution here:



                  curl -X POST -u "apikey:$apikey"
                  --header "Content-Type: application/json"
                  --data ""text": "$variable""
                  "$url"


                  Basically, " is a quote to handle the following string together, " escapes the quote, and $varname is a variable.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Mar 3 at 20:03









                  ilkkachu

                  62.8k10103180




                  62.8k10103180










                  answered Mar 3 at 18:58









                  NyosNyos

                  15113




                  15113





















                      4














                      I tend to use heredocs when building JSON for use with curl:



                      curl -s -X POST $URL -d@- <<EOF
                      [

                      "id": 101,
                      "text": "$variable"

                      ]
                      EOF





                      share|improve this answer



























                        4














                        I tend to use heredocs when building JSON for use with curl:



                        curl -s -X POST $URL -d@- <<EOF
                        [

                        "id": 101,
                        "text": "$variable"

                        ]
                        EOF





                        share|improve this answer

























                          4












                          4








                          4







                          I tend to use heredocs when building JSON for use with curl:



                          curl -s -X POST $URL -d@- <<EOF
                          [

                          "id": 101,
                          "text": "$variable"

                          ]
                          EOF





                          share|improve this answer













                          I tend to use heredocs when building JSON for use with curl:



                          curl -s -X POST $URL -d@- <<EOF
                          [

                          "id": 101,
                          "text": "$variable"

                          ]
                          EOF






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Mar 3 at 20:20









                          Roger LipscombeRoger Lipscombe

                          816825




                          816825



























                              draft saved

                              draft discarded
















































                              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%2f504057%2fhow-do-i-add-a-variable-to-this-curl-command%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?