Bash 스크립트에 짧은 도우미 함수를 정의했습니다. 가독성을 위해 상용구 헤더를 함수 외부에 선언된 변수로 바꾸고 싶습니다.
나는 그 진술을 다양한 방법으로 참조하려고 시도했지만 아무것도 작동하지 않았습니다.
이걸 교체하고 싶어요
put() {
local response=$(curl -H 'Content-Type: application/json' -H 'Accept: application/vnd.urbanairship+json; version=3;' ...)
echo $response
}
이 같은
headers=???
put() {
local response=$(curl $headers ...)
echo $response
}
즉, 다음 $headers
으로 확장되어야 합니다.-H 'Content-Type: application/json' -H 'Accept: application/vnd.urbanairship+json; version=3;'
$headers
매개변수로 올바르게 전달하려면 별도의 단어로 확장해야 하므로 배열을 사용해 보기도 했습니다.
참고: 거의 포기했습니다. 이렇게 간단한 용도로는 논쟁할 가치가 없습니다. 이 시점의 질문은 계몽을 위한 것입니다.
답변1
배열을 사용하여 이 문제를 해결할 수 있습니다.
headers=( -H 'Content-Type: application/json'
-H 'Accept: application/vnd.urbanairship+json; version=3;' )
"${headers[@]}"
그런 다음 통화에 사용할 수 있습니다 curl
.
curl "${headers[@]}" URL
확장에 대한 참조는 배열의 4개 항목( -H
, 및 ) Content-Type: application/json
이 개별적으로 참조되므로 셸에 의해 더 이상 분할되지 않도록 합니다.-H
Accept: application/vnd.urbanairship+json; version=3;
귀하의 기능:
put () {
curl "${headers[@]}" URL
}
response
win 구현의 변수는 불필요합니다 . 따옴표 없이 호출하면 echo
해당 값을 공백(기본적으로)으로 추가로 분할하고 각 부분에 파일 이름 글로빙을 적용합니다. echo
호출 결과를 출력하는 데 대신 사용하도록 남겨둘 수 있습니다 .curl
curl