Bash 如何避免在数组中存储没有间距的值?
在我的shell脚本中,我编写了将命令值存储在数组中的命令。它有两个元素(712710),但它们作为一个元素存储在数组中(没有间距)。如何避免这种情况 我的剧本:Bash 如何避免在数组中存储没有间距的值?,bash,gitlab,gitlab-api,Bash,Gitlab,Gitlab Api,在我的shell脚本中,我编写了将命令值存储在数组中的命令。它有两个元素(712710),但它们作为一个元素存储在数组中(没有间距)。如何避免这种情况 我的剧本: #! /bin/bash GIT_API="https://XXXXXXXXXX.lk/api/v4" GIT_TOKEN="XXXXXXXXXXXX" GROUP_NAME="testdevops" GROUP_ID=$(curl --request GET --he
#! /bin/bash
GIT_API="https://XXXXXXXXXX.lk/api/v4"
GIT_TOKEN="XXXXXXXXXXXX"
GROUP_NAME="testdevops"
GROUP_ID=$(curl --request GET --header "PRIVATE-TOKEN: $GIT_TOKEN" -g "$GIT_API/groups?top_level_only=true&search=testdevops" | jq -r ".[] .id")
echo "${GROUP_ID}"
USER_ID_ARRAY=($(curl --request GET --header "PRIVATE-TOKEN: $GIT_TOKEN" "$GIT_API/groups/$GROUP_ID/members" | jq -r ".[] .id"))
USER_ACCESS_LEVEL_ARRAY=($(curl --request GET --header "PRIVATE-TOKEN: $GIT_TOKEN" "$GIT_API/groups/$GROUP_ID/members" | jq -r ".[] .access_level"))
echo ${USER_ID_ARRAY[*]}
echo ${USER_ACCESS_LEVEL_ARRAY[*]}
for (( c=0; c<${#USER_ACCESS_LEVEL_ARRAY[@]}; c++ ))
do
if [ ${USER_ACCESS_LEVEL_ARRAY[$c]} != 50 ]
then
NON_OWNER_USERS_ARRAY_ELEMENT_NO+=(${c})
fi
done
echo ${NON_OWNER_USERS_ARRAY_ELEMENT_NO[*]}
for (( d=0; d<${#NON_OWNER_USERS_ARRAY_ELEMENT_NO[@]}; d++ ))
do
NON_OWNER_USERS_ID_ARRAY+=${USER_ID_ARRAY[${NON_OWNER_USERS_ARRAY_ELEMENT_NO[$d]}]}
done
echo ${NON_OWNER_USERS_ID_ARRAY[0]}
输出需求:
36 711 712 710
50 50 20 10
2 3
712 710
场景是这样的:在GitLab中标识给定组名的用户并将其从组中删除。使用()添加元素,使用@
详情如下:
#声明
myArry=()
(d=0;dit是一个BASH特定的东西(使用BASH数组),所以我更新了你的标签。Git完全不相关;GITLAB和它们的API可能稍微相关,所以我把那些标签放进去了,但是你可能会考虑删除它们。这可能不是整个问题(我没有用BASH数组做很多事情),但是:<代码> No.OnrulsUsSersIdIaLoad + = $$。{USER\u ID\u ARRAY[${NON\u OWNER\u USERS\u ARRAY\u ELEMENT\u NO[$d]}]}
缺少括号,不会附加到数组中。
36 711 712 710
50 50 20 10
2 3
712 710