2017-12-06 20 views
1

I持って

は私が機能

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 
} 

に持っているシステムにいくつかのデータをPOSTするために私を助けているスクリプト私は、あなたがSEをすることができ、$featureIDに渡す機能と、私は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]"}}}' 

で定義されているminReq変数呼び掛けます私は最終的に私がcurler関数を呼び出す私はカールを使用したいのですが、テストのために、私はエコー

を持つ引数インデックス

に基づいて実際の変数名によっておよび$1 ANDF $2で参照しようとした電子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ペイロードが含まれ

要素-mac27:スクリプトは、私はがelementName上記の私の例では$2

として$minReq引数を参照するとき$elementNameが挿入された後、私のペイロード$minReqが切断されていることであることは「行為であり、私は見ています何$

をkellygold $ elementNameが定義されており、以前にユーザーから収集された「-on

はまた、私は、変数を参照する場合、それはそれは期待どおりに動作ネイティブ名$minReqだとしていること、気づく

それは私が関数呼び出し$minReqに渡された変数名で私の議論を参照するとき、私は$2を渡すとき、それは期待通りに動作しますが、ということですなぜ、次のエコー 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$ 

を期待それは私のペイロードに変数が挿入された直後に切断されますか?私のデータを維持しながら変数名の代わりにarg番号を参照するにはどうすればいいですか?

+2

これは、変数を引用しないために発生します。 'curler" $ featureID "" $ minReq "を呼び出すだけでなく、他のすべての拡張について適切な引用符を付ける必要があります。完全なスクリプトで[ShellCheck](http://shellcheck.net)を試してください。 –

答えて

1

あなたは二重引用符で囲まれたパラメータを使用して関数を呼び出す必要があります。 、 シェルは単語分割、 を行い、代わりに2つのパラメータを渡すので、

curler "$featureID" "$minReq" 

二重引用符なし関数は、それらを複数のパラメータに渡って単語分割します。

大まかには、 コマンドパラメータで使用される変数を二重引用符で囲む必要があります。

+0

完璧に動作する、私はstackoverflowが大好き! – Goldfish

関連する問題