다음과 같이 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
변수가 올바르게 설정되지 않는다는 추가 문제가 있습니다. 이 문제가 해결되자 예상대로 작동했습니다.