Home > Software design >  Wait until curl command has finished
Wait until curl command has finished

Time:07-26

I'm using curl to grab a list of subscribers. Once this has been downloaded the rest of my script will process the file.

How could I make the script wait until the file has been downloaded and error if it failed?

curl "http://mydomain/api/v1/subscribers" -u 'user:pass' | json_pp >> new.json

Thanks

CodePudding user response:

As noted in the comment, curl will not return until requests is completed (or failed). I suspect you are looking for a way to identify errors in the curl, which currently are getting lost. Consider the following:

  1. If you just need error status, you can use bash pipefail option set -o pipefail. This will allow you to check for failure in curl
if curl ... | json_pp >> new.json ; then
  # All good
else
  # Something wrong.
fi

Also, you might want to save the "raw" response, before trying to pretty-print it. Either using a temporary file, or using tee

if curl ... | tee raw.json | json_pp >> new.json ; then
   # All good
else
   # Something wrong - look into raw.json
fi
  • Related