我有以下代码:
streams=("CI" "UI" "QA")
role_text="streams:read:"
result=""
for s in "${streams[@]}"
do
STREAMID=$(curl -s -u $user:$pass -X GET -H "Content-Type: application/json" ${GRAYLOG2_URL}/streams | python /opt/script.py $s)
curl -s -u $user:$pass -X POST -H "Content-Type: application/json" ${GRAYLOG2_URL}/streams/${STREAMID}/resume > /dev/null
result=$result$role_text$STREAMID,
echo "result: "$result
done
final_result=$(echo $result | sed '$s/.$//')
ROLES=$(curl -u $user:$pass -X GET -H "Content-Type: application/json" ${GRAYLOG2_URL}/roles 2>/dev/null)
echo "Final result: "$final_result
GRAYLOG2_ROLE='
{
"name" : "'$role'",
"description" : "'${role}' role",
"permissions" : [ "'${final_result}'" ],
"read_only" : false
}'
${final_result}
应该是一个字符串,如:
"streams:read:582e0b99b9d3230d808cc0d0", "streams:read:582e0b99b9d3230d808cc0d4", "streams:read:582e0b98b9d3230d808cc0cb"
相反,我得到的结果是:
"streams:read:582e0b98b9d3230d808cc0cb,streams:read:582e0b99b9d3230d808cc0d0,streams:read:582e0b99b9d3230d808cc0d4"
显然,这不应该正常工作。
有谁能告诉我如何获得所需的结果?
非常感谢, 加布里埃尔
答案 0 :(得分:0)
我的问题与${final_result}
应该被创建为一个字符串数组这样的事实有关:
"streams:read:582e0b99b9d3230d808cc0d0", "streams:read:582e0b99b9d3230d808cc0d4", "streams:read:582e0b98b9d3230d808cc0cb"
但相反,我会得到一个大字符串,如:
"streams:read:582e0b98b9d3230d808cc0cb,streams:read:582e0b99b9d3230d808cc0d0,streams:read:582e0b99b9d3230d808cc0d4"
我得到了同事的帮助并解决了这个问题:
result="$result\"$role_text$STREAMID\""
谢谢大家的关注,并指出了正确的方向。 加布里埃尔