次のようにbashスクリプトを使用してAPIに接続しました。
#!/bin/bash
curl "https://example.com/templates/search?field=template_id& field=name" \
-H "Authorization: Bearer ----------------------------------------------------------------"
curl -X POST "https://example.com/audits" \
-d '{ "template_id": "template_28c5b7ec77f34ea7881b6a9ef9c01b91", "header_items": [ { "item_id": "f3245d40-ea77-11e1-aff1-0800200c9a66", "label": "Audit Title", "type": "textsingle", "responses": { "text": "${title}" } }, { "item_id": "f3245d43-ea77-11e1-aff1-0800200c9a66", "label": "Conducted By", "type": "textsingle", "responses": { "text": "John Citizen" } } ] }' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ----------------------------------------------------------------"
接続が成功しました。
その後、レビューのタイトルを入力できるフォームを含むPHP Webページがあります。フォームで「保存」をクリックすると、上記のスクリプトが実行され、監査が生成されます。ただし、タイトルは$ {title}で、テキストボックスの値ではありません。
このように、bashスクリプトに変数値を公開することは可能ですか?
ベストアンサー1
コメントとチャットディスカッションを考慮して更新されました。
PHPコードはシェルスクリプトをPHP変数として実行しますsh ./curl.sh $title
(理想的にはシェルを混同しないようにデータを正しく$title
引用する必要があります)。$title
したがって、シェルスクリプトは$*
シェル変数ではなくコマンドライン引数からタイトルを選択する必要があります$title
。
送信されたJSON文書は一重引用符で囲まれています。これは$title
、シェルが変数拡張を表示できないことを意味します。
変数を拡張するには、一重引用符で囲まれた文字列を一時的に破棄する必要があります。
-d '{ "template_id": "template...{ "text": "'"$*"'" }...
外側の二重引用符は"'"$*"'"
JSONドキュメントに属し、一重引用符内の内容はシェルに属します。$*
スペースやファイル名のグロービングパターンが含まれている場合は、内部二重引用符で値を引用します。
PHPコードには、PHP$title
変数が正しく設定されないという追加の問題があります。この問題が解決すると、期待どおりに機能しました。