2017-12-06 31 views
1

나는이

내가 함수

function curler(){ 
#curl "https://secure.aha.io/api/v1/features/"$featureID"/requirements?access_token={myAccessToken}" -d "$minReq" -X POST -H "Content-type: Application/json" -H "Accept: application/json" 
echo "https://secure.aha.io/api/v1/features/"$1"/requirements?access_token={myAccessToken}" -d "$2" -X POST -H "Content-type: Application/json" -H "Accept: application/json" 
echo $1 
echo $2 
} 

에게이 시스템에 일부 데이터를 게시하는 나에게 도움이되는 스크립트 그때 $featureID에서 함수 전달에 호출하고 minReq 변수는 내가 수 있습니다 se curler 함수에서 내 JSON 페이로드

minReq='{"requirement":{"name":"'$elementName' - Min 
Length","workflow_status":{"name":"Defined"},"description":"- 
Indicates the minimum length of strings or 
numbers.","assigned_to_user":{"email":"[email protected]"}}}' 

와 정의 내가

가 궁극적으로 나는 컬을 사용할 인수 지수에 따라 실제 변수 이름에 의해 $1 우타 $2에 의해 참조 시도하지만, 테스트를 위해 내가 가진 curler 함수를 호출 에코

이 전자 FEATUREID 문자열 MDL-123$minReq입니다 curler $featureID $minReq

echo 다음

https://secure.aha.io/api/v1/features/mdl-149/requirements?access_token={myAccessToken} -d {"requirement":{"name":"Act-On -X POST -H Content-type: Application/json -H Accept: application/json 

mdl-149 
{"requirement":{"name":"Act-On 
출력 내 JSON 페이로드 포함 691,363,210

요소 - mac27는 : 스크립트는 $

은 내가보고하고하는 것은 내가가 elementName 위의 내 예제에서 $2

$minReq 인수를 참조 할 때 내 페이로드 $minReq$elementName를 삽입 한 후 차단한다는 것입니다 kellygold은 '행위이다 $가 elementName가 정의되고, 이전에 사용자로부터 수집 한 '-on

나는 또한 내가 변수를 참조하는 경우 그 다음이 예상대로 작동 기본 이름 $minReq의 같은 것을 알

그래서 다음과 같은 에코 echo "https://secure.aha.io/api/v1/features/"$1"/requirements?access_token={myaccesstoken}" -d "$minReq" -X POST -H "Content-type: Application/json" -H "Accept: application/json"

출력은

https://secure.aha.io/api/v1/features/mdl-149/requirements?access_token={myAccessToken} -d {"requirement":{"name":"act-on - Min Length","workflow_status":{"name":"Defined"},"description":"- Indicatest the minimum length of strings or numbers.","assigned_to_user":{"email":"[email protected]"}}} -X POST -H Content-type: Application/json -H Accept: application/json 

mdl-149 

{"requirement":{"name":"act-on 
elements-mac27:Scripts kellygold$ 

이유가 있다는 것입니다 예상 나는 함수 호출 $minReq에 전달 된 변수 이름으로 내 주장을 참조 할 때 예상대로 작동하지만, 나는 $2를 통과 할 때 변수가 내 페이로드에 삽입 된 직후에 잘라 버릴 수 있습니까? 데이터를 유지하면서 변수 이름 대신 arg 번호를 어떻게 참조 할 수 있습니까?

+2

이것은 변수를 인용하지 않았기 때문에 발생합니다. 'curler "$ featureID" "$ minReq"를 호출하고 다른 모든 확장에 대해 적절한 인용 부호를 사용해야합니다.전체 스크립트에서 [ShellCheck] (http://shellcheck.net)를 시도하십시오. –

답변

1
당신은 큰 따옴표로 묶여 매개 변수로 함수를 호출 할 필요가

:

curler "$featureID" "$minReq" 
이중 따옴표없이

, 쉘이 단어 분할을 수행 대신 전달하는 두 개의 매개 변수, 함수는 여러 매개 변수에 대해 단어 분리를 수신합니다.

일반적으로 명령 매개 변수에 사용 된 변수는 큰 따옴표로 묶어야합니다.

+0

완벽하게 작동합니다. stackoverflow를 좋아합니다! – Goldfish