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