サーバーにデータを送信する簡単なスクリプト

サーバーにデータを送信する簡単なスクリプト

私のbashスクリプトが正しいかどうか尋ねたいです。 1秒ごとにsensors合計10回コ​​マンドの出力を送信したいと思います。

#!/bin/bash
for i in {1..10}
do
a=$(date '+%s')
D=$(sensors)

curl -i -k -X POST -H "Content-Type: application/json" --data '{ "id":2,"timestamp":echo "${a}","data":echo "${D}"}' https://dv7knsjzph.execute-api.eu-central-1.amazonaws.com/prod/boxtronic-devices/2/data/
sleep 1
done

ありがとう

ベストアンサー1

コマンドを呼び出すときにエコーを使用しないでください。

一重引用符なしで行うことができます。これを行うには、コマンド呼び出しで引用符をエスケープする必要があります。

curl -i -k -X POST -H "Content-Type: application/json" --data "{ \"id\":2,\"timestamp\": \"${a}\",\"data\": \"${D}\"}" https:......

または、単一引用符を使用するには、文字列連結を実行する必要があります。つまり、変数の前の一重引用符を終了して続行します(「誰も」が提案したように:

curl -i -k -X POST -H "Content-Type: application/json" --data '{ "id":2,"timestamp": "'"${a}"'","data": "'"${D}"'"}' https:......

echoを使用する必要がある場合は、呼び出しでechoの出力を使用する必要があります。

curl -i -k -X POST -H "Content-Type: application/json" --data "{ \"id\":2,\"timestamp\": \"$(echo ${a})\",\"data\": \"$(echo ${D})\"}" https:......

おすすめ記事