質問失礼します。
#!/bin/bash #ウェブフックURLを$WEBHOOKに格納 WEBHOOK="https://discord.com/api/webhooks/〇〇〇〇〇〇〇〇/〇〇〇〇〇〇〇〇" PASS=$(df /) curl \ -f \ -H "Content-Type: application/json" \ -d "{'content': `$PASS`}" \ $WEBHOOK
上記のシェルスクリプトでDiscodeにコマンドの出力結果を送りたいのですが
-bash: Filesystem: command not found curl: (22) The requested URL returned error: 400
こちらのエラーが出て出力されません。
考えられる原因などありましたら教えて頂けますと幸いです。
試したこと
・パスの中のコマンドを変更
・引用符を様々なパターンで確認
・パスの中のコマンドを絶対パスで書く
・ただの文章が送れるか確認(送れました)
#!/bin/bash #ウェブフックURLを$WEBHOOKに格納 WEBHOOK="https://discord.com/api/webhooks/〇〇〇〇〇〇〇〇/〇〇〇〇〇〇〇〇" PASS=$(df /) curl \ -f \ -H "Content-Type: application/json" \ -d "{'content': '$PASS'}" \ $WEBHOOK
$PASSの引用符をシングルクォーテーションに変更しました。
変更後のエラー
curl: (22) The requested URL returned error: 400
こちらの一行だけが出力されました。
#!/bin/bash #ウェブフックURLを$WEBHOOKに格納 WEBHOOK="https://discord.com/api/webhooks/〇〇〇〇〇〇〇〇/〇〇〇〇〇〇〇〇" PASS=$(df /) curl \ -f \ -H "Content-Type: application/json" \ -d "{'content': "$PASS"}" \ $WEBHOOK
↑シングルクォーテーション→ダブルクオテーションに変更しました。
curl: (6) Could not resolve host: 1K-blocks curl: (6) Could not resolve host: Used curl: (6) Could not resolve host: Available curl: (6) Could not resolve host: Use% curl: (6) Could not resolve host: Mounted curl: (6) Could not resolve host: on curl: (3) URL using bad/illegal format or missing URL
↑実行するとこのようなメッセージが出力されました。^Cを押さないとコマンド入力できない状態です。
#!/bin/bash #ウェブフックURLを$WEBHOOKに格納 WEBHOOK="https://discord.com/api/webhooks/〇〇〇〇〇〇〇〇/〇〇〇〇〇〇〇〇" PASS=$(df /) curl \ -f \ -H "Content-Type: application/json" \ -d "{'content': \"$PASS\"}" \ $WEBHOOK
↑内側のダブルクオテーションをエスケープしました。
curl: (22) The requested URL returned error: 400
↑こちらの行が出力されました。
curlコマンドがあるか調べたのですが/usr/bin/curlに収納されていました。
> -bash: Filesystem: command not found
`$PASS` としているため(command substitution)、df / の出力文字列を実行しようとしてエラーになっています。
melianさんご回答頂きありがとうございます。
変更後、別のエラーが出てしまったので拝見して頂けると嬉しいです。
シングルクォーテーションですと、$PASS が展開されません($PASS という文字列のままです)。ダブルクォートであれば $PASS の内容が展開されます。
melianさんご回答頂きありがとうございます。
上記のようなエラーが出力されました。
ちなみに'content'の方も"content"に変更した所、同様のメッセージが出力された所存です。
ああ、外側に文字列があったのでしたね。それでは、
-d "{'content': "$PASS"}"
を、
-d "{'content': \"$PASS\"}"
に変更してみて下さい。(内側のダブルクォートをエスケープします)
> The requested URL returned error: 400
この HTTP response 400 というのは Bad Request、つまり、サーバーがそのリクエストを処理できないことを意味しています。リクエストの構文(送信した JSON 文字列の中身)が不適切である可能性があります。
melianさんご回答頂きありがとうございます。
JSON文字列の中身が不適切が原因だった事が分かり無事解決しました。
本当にありがとうございます。

回答1件
あなたの回答
tips
プレビュー