How to pass current date to a curl query using shell script?
Inside your string, change
"CreateDate": "2015-01-01T15:23:42",
to
"CreateDate": "'"$(date +%Y-%m-%dT%H:%M:%S)"'",
There, I terminated the '
string and started a "
string with the $(date)
inside it. Otherwise, it would not get executed, but just passed to curl
as a string.
You can also assign it to a variable beforehand and use it later like this:
now=$(date +%Y-%m-%dT%H:%M:%S)..."CreateDate": "'"$now"'",
Other problems
Change
curl -XPUT 'http://localhost:9200/nondomain_order/orders/'+$number+'' -d '{
into
curl -XPUT 'http://localhost:9200/nondomain_order/orders/'"$number" -d '{
Bash concatenation is just two strings one after another without a space between them. Otherwise, it would query URLS like http://localhost:9200/nondomain_order/orders/+0123456789+
instead of http://localhost:9200/nondomain_order/orders/0123456789
(Here, I protected the number
variable against expansion with double quotes for safety if it ever changes)
Rather than playing with quotes inside quotes I would suggest using here-doc to get rid of all magic quoting. Use your curl
like this:
number=10dt="$(date --iso-8601=seconds)"curl -XPUT 'http://localhost:9200/nondomain_order/orders/'$number -d@- <<EOF{ "CustType": null, "tag": "OrderType:Postpaid", "GUDeviceID": "0", "IsAvailable": false, "GUOrderID": "123", "OrderID": "3", "OrderDate": "2015-01-06T15:23:42.7198285+05:30", "GUAccountID": "15010615234251403", "CreateUser": "admin", "CreateDate": "$dt", "CancelledDate": "1899-01-01T00:00:00", "CancelledUser": null, "GUTranID": "15010615234271604", "TenentID": 39, "CompanyID": 42, "ViewObjectID": 0, "ObjectID": null, "Status": 2, "OrderDetails": [ { "GUPromtionID": "15010519341113508", "GUOrderID": "15010615234271703", "ChangeID": 0, "GUPackageID": "14100112243589402", "startdate": "2015-01-06T00:00:00" } ]}EOF
You can do it like this:
DATE_ISO=$(date +"%Y-%m-%dT%H:%M:%S")...curl -XPUT 'http://localhost:9200/nondomain_order/orders/'+$number+'' -d '{... "CreateDate": "'"$DATE_ISO"'",...}'