Bash 스크립트에 PHP 변수 게시

Bash 스크립트에 PHP 변수 게시

다음과 같이 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 웹 페이지가 있습니다. 양식에서 "저장"을 누르면 위 스크립트가 실행되고 감사가 생성됩니다. 그러나 제목은 ${title}이며 텍스트 상자의 값은 아닙니다.

이런 식으로 bash 스크립트에 변수 값을 게시하는 것이 가능합니까?

답변1

댓글과 채팅 토론을 고려하여 업데이트되었습니다.

PHP 코드는 쉘 스크립트를 PHP 변수로 실행합니다 sh ./curl.sh $title( 이상적으로는 쉘을 혼동하지 않도록 데이터를 올바르게 $title인용해야 합니다 ). $title따라서 쉘 스크립트는 $*쉘 변수가 아닌 명령줄 인수에서 제목을 선택해야 합니다 $title.

전송된 JSON 문서는 작은따옴표로 묶여 있습니다. 이는 $title쉘이 변수 확장을 볼 수 없음을 의미합니다.

변수를 확장하려면 작은따옴표로 묶인 문자열을 일시적으로 끊어야 합니다.

-d '{ "template_id": "template...{ "text": "'"$*"'" }...

바깥쪽 큰따옴표는 "'"$*"'"JSON 문서에 속하고 작은따옴표 안의 내용은 셸에 속합니다. $*공백 및/또는 파일 이름 글로빙 패턴이 포함된 경우 내부 큰따옴표로 값을 인용합니다 .

PHP 코드에는 PHP $title변수가 올바르게 설정되지 않는다는 추가 문제가 있습니다. 이 문제가 해결되자 예상대로 작동했습니다.

관련 정보