How to pass current date to a curl query using shell script? How to pass current date to a curl query using shell script? elasticsearch elasticsearch

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 numbervariable 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"'",...}'