Bash 스크립트의 컬 명령 내에서 변수를 전달하는 방법

Bash 스크립트의 컬 명령 내에서 변수를 전달하는 방법

변수를 전달해야 하는 bash 스크립트를 만들고 있습니다.$matchteams 및 $matchtime다음 컬 명령을 입력하십시오

curl -X POST \
  'http://5.12.4.7:3000/send' \
  --header 'Accept: */*' \
  --header 'User-Agent: Thunder Client (https://www.thunderclient.com)' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "token": "abcdjbdifusfus",
  "title": "$matchteams | $matchtime",
  "msg": "hello all",
  "channel": "1021890237204529235"
}'

누군가 나를 도와줄 수 있나요?

답변1

작은따옴표 안의 텍스트는 리터럴로 처리됩니다.

--data-raw '{
  "token": "abcdjbdifusfus",
  "title": "$matchteams | $matchtime",
  "msg": "hello all",
  "channel": "1021890237204529235"
}'

(변수 주변의 큰따옴표도 리터럴로 처리됩니다.) 이 경우 작은따옴표를 사용하여 쉘이 변수를 구문 분석하고 확장할 수 있도록 하거나 리터럴 큰따옴표를 적절하게 이스케이프 처리하여 전체 문자열을 큰따옴표로 묶어야 합니다. :

# Swapping between single quote strings and double quote strings
--data-raw '{
  "token": "abcdjbdifusfus",
  "title": "'"$matchteams | $matchtime"'",
  "msg": "hello all",
  "channel": "1021890237204529235"
}'

# Enclosing the entire string in double quotes with escaping as necessary
--data-raw "{
  \"token\": \"abcdjbdifusfus\",
  \"title\": \"$matchteams | $matchtime\",
  \"msg\": \"hello all\",
  \"channel\": \"1021890237204529235\"
}"

이는 "abc"'def'쉘에 의해 확장되므로 abcdef인용 스타일로 문자열을 바꾸는 것이 완벽하게 허용된다는 점을 기억하십시오. 전반적으로 나는 첫 번째 스타일을 사용하는 경향이 있습니다.

관련 정보