こんにちは、投稿からジョブを生成するためにパイプカールメソッドを使用しています。ハードコードされた値を使用して端末で実行すると、正常に動作します。ただし、変数を使用して実行しようとするとエラーが発生します。
スクリプト:
#!/bin/bash
echo "$1"
echo "$2"
echo "$3"
echo "$4"
echo "$5"
echo '{
"transactions": [
{
"type": "title",
"value": "$1"
},
{
"type": "description",
"value": "$2"
},
{
"type": "status",
"value": "$3"
},
{
"type": "priority",
"value": "$4"
},
{
"type": "owner",
"value": "$5"
}
]
}' | arc call-conduit --conduit-uri https://mydomain.phacility.com/ --conduit-token mytoken maniphest.edit
実装する:
./test.sh "test003 ticket from api post" "for testing" "open" "high" "ahsan"
出力:
test003 ticket from api post
for testing
open
high
ahsan
{"error":"ERR-CONDUIT-CORE","errorMessage":"ERR-CONDUIT-CORE: Validation errors:\n - User \"$5\" is not a valid user.\n - Task priority \"$4\" is not a valid task priority. Use a priority keyword to choose a task priority: unbreak, very, high, kinda, triage, normal, low, wish.","response":null}
エラーが示すように、$ 4と$ 5を変数ではなく値として読み込みます。 $variablesをこれらのパラメータの入力として使用する方法を理解できません。
ベストアンサー1
ここでの問題は一重引用符を使用していることです。シェルによる変数拡張を防止します。代わりに二重引用符を使用するか (内部二重引用符をエスケープする)、変数 $X の周囲に一重引用符を追加します。
たとえば、次のコマンドを比較します。
$ test_var="wiii" && echo '"$test_var"'
"$test_var"
これ:
$ test_var="wiiii" && echo "\"$test_var\""
"wiiii"
これ:
$ test_var="wiiii" && echo '"'$test_var'"'
"wiiii"
読むべき追加情報: