Переменные не подставляются, когда для строк используются литералы типа одинарных кавычек, поэтому вам нужно разбить строку на части, чтобы можно было вставить некоторые значения в результирующую строку.
export service=kafka
curl -u admin:admin -i \
-H 'X-Requested-By: ambari' \
-X PUT \
-d '{"RequestInfo":{"context":"_PARSE_.STOP.'$service'","operation_level":{"level":"SERVICE","cluster_name":"'$CLUSTER_NAME'","service_name":"$service"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' \
http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service
здесь упрощенно Пример, чтобы прояснить это:
#!/bin/bash
service=XXX
json='{"A":"$service"}'
echo "wrong JSON: $json"
json='{"A":"'$service'"}' #this string consist of 3 parts '{"A":"' + $service + '"}'
echo "good JSON: $json"
вывод:
неправильно JSON: {"A": "$ service"}
хорошо JSON: {"A": "XXX"}