##教えてほしいこと
次のプログラムコード(シェルスクリプト)を実行すると、syntaxエラーが発生します。
syntaxエラーの原因が分からないため、教えてほしいです。
##プログラムコード
html
1#!/bin/bash 2 3POST_URL=https://connect.codyltech.com/connectors/webhook/push/geE6Ax0GQMKg-3Bi5z06Kw/VsCgp8ovRbCotPPHPE1BZQ 4 5T_P_H=(`/home/pi/dev/BME280.py | awk '{print $3}'`) 6 7echo '{"temp":"'${T_P_H[0]}'","pres":"'${T_P_H[1]}'","hum":"'${T_P_H[2]}'"}' 8 9curl -X POST -H "Content-type:application/json" -d @- $POST_URL
##発生しているエラー
html
1BME280.sh: 6:BME280.sh: Syntax error: "(" unexpected
/home/pi/dev/BME280.py を実行するとどういう出力がされるのですか?
複数行文字列でしょうか?/home/pi/dev/BME280.pyは実行権限はついていますか?
GitHubで該当するソースコードがありましたので、回答しました。
返信ありがとうございます。
BME280.pyを実行すると、
temp : 25.38 ℃
pressure : 989.07 hPa
hum : 50.17 %
3行で結果が表示されます。
BME280.pyには実行権限はついております。
質問のコードを最新に修正させていただきますが、このコードでも同様にエラーがでてしまいます。
コンソール画面で1行ずつ実行していき、
echo '{"temp":"'${T_P_H[0]}'","pres":"'${T_P_H[1]}'","hum":"'${T_P_H[2]}'"}'
を実行したとき、
T_P_H=(`/home/pi/dev/BME280.py | awk '{print $3}'`)
と記述すると、
{"temp":"25.30","pres":"989.11","hum":"50.26"} と正しく表示されますが、
T_P_H=(`/home/pi/dev/BME280.py | awk -F'\n' '{print $0}'`)
と記述すると、
{"temp":"temp","pres":":","hum":"25.26"} というように温度データしか拾ってきません。
print $0だからでしょうか?
正しく表示される方で良いと思います!
返信ありがとうございます。
そうすると、最初のコードのまま、エラーの原因が分かりません。
sh BME280.shで実行すると、syntaxエラーとなりますが、
./ BME280.shで実行すると、エラーが発生しません。
なぜでしょうか。
bash BME280.sh
ではどうですか?
./ BME280.shと同じく、エラーが発生しません。
なぜでしょうか。
shとbashの違いはなかなか難しいので、調べてみてください。
sh BME280.sh は shで実行されます。
./BME280.sh は1行目にbashの記述があるので、
bash BME280.sh と同じように実行されます。
なので、今回はbashして実行するという前提で回答しました。
回答1件
あなたの回答
tips
プレビュー