我需要将带有变量的curl主体插入到shell脚本中:
这是脚本片段:
curl -k \
-X PUT \
-d @- \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
"$SERVER_URL/api/v1/namespaces/$NAMESPACE/secrets/$SECRET_ID" <<-'EOF'
{
"kind": "Secret",
"apiVersion": "v1",
"metadata": {
"name": "$SECRET_ID"
},
"stringData": {
"$key": "$value"
}
}
EOF
但是,$SECRET_ID
,$key
和$value
都没有“解决”。
编辑
我已经尝试过:
curl -k \
-X PUT \
-d @- \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
"$SERVER_URL/api/v1/namespaces/$NAMESPACE/secrets/$SECRET_ID" <<-"EOF"
{
"kind": "Secret",
"apiVersion": "v1",
"metadata": {
"name": "$SECRET_ID"
},
"stringData": {
"$key": "$value"
}
}
EOF
但这是行不通的。
答案 0 :(得分:2)
您使用<<-'EOF'
在Heredoc中引用了JSON。如果使用heredoc分隔符,则不会扩展变量。使用<<-EOF
获得普通的双引号变量扩展语义。