我正在使用中心休息功能:https://github.com/blackducksoftware/hub-rest-bash
我在根文件夹的新“ test.bash”脚本中有一个字符串数组:
get_groups=( "ABC MM CC IT Test RW" "ABC GG CMN IOSS Test RW" "ABC WW IMG IMGE Test RW" )
我需要从每个字符串中获取第四个元素,然后将它们从“ project-functions.bash”传递给函数“ create_project()”:
for (( var = 0; var < ${#get_groups[*]}; var++ ));
do
get_projectname_from_user_group=$(echo ${get_groups[$var]} | cut -d ' ' -f 4)
create_project ${get_projectname_from_user_group}
done
当我转到函数“ create_project()”并尝试显示POST_ARGS时:
echo ${POST_ARGS[@]}
我得到了积极的结果:
-d {"name": "IT", "versionRequest": {"versionName": "1.0", "phase": "PLANNING", "distribution": "INTERNAL"}} --header Content-Type: application/json
-d {"name": "IOSS", "versionRequest": {"versionName": "1.0", "phase": "PLANNING", "distribution": "INTERNAL"}} --header Content-Type: application/json
-d {"name": "IMGE", "versionRequest": {"versionName": "1.0", "phase": "PLANNING", "distribution": "INTERNAL"}} --header Content-Type: application/json
在函数“ project_name”的末尾,您可以找到帖子$ path。当我转到函数“ post()”并尝试在其中显示POST_ARGS时:
echo ${POST_ARGS[@]}
我知道了
-d {"name": "IT", "versionRequest": {"versionName": "1.0", "phase": "PLANNING", "distribution": "INTERNAL"}} --header Content-Type: application/json
./rbac_mapping_to_bd.bash: line 54: cut: No such file or directory
-d {"name": "", "versionRequest": {"versionName": "1.0", "phase": "PLANNING", "distribution": "INTERNAL"}} --header Content-Type: application/json
./rbac_mapping_to_bd.bash: line 54: cut: No such file or directory
-d {"name": "", "versionRequest": {"versionName": "1.0", "phase": "PLANNING", "distribution": "INTERNAL"}} --header Content-Type: application/json
这意味着,对于第一行,它工作正常,但对于接下来的2行,则行不通。我能做什么?
答案 0 :(得分:1)
要获取get_groups
的每个元素中的第四个元素,您可以简单地使用一个临时数组,并将get_groups
的每个元素拆分为临时数组,而无需使用您需要的第四个元素。例如
get_groups=("ABC MM CC IT Test RW"
"ABC GG CMN IOSS Test RW"
"ABC WW IMG IMGE Test RW")
for i in "${get_groups[@]}"; do ## loop over each element
tmp=( $(echo $i) ) ## split element into tmp array
echo ${tmp[3]} ## output 4th element
done
(注意:需要在"${get_groups[@]}"
循环声明中的for
周围加上双引号,并通过命令替换将$i
传递给echo
用于确保发生分词。)
使用/输出示例
将以上内容复制/粘贴到终端中将产生:
IT
IOSS
IMGE
让我知道这是否不是您所需要的。您可以将第四个元素传递给所需的任何函数,而不是像上面那样将其输出。
答案 1 :(得分:0)
尝试一下-
for i in ${!get_groups[*]}; do
get_projectname_from_user_group=`echo "${get_groups[$i]}" | awk -F" " '{print $4}'`
if ! [ -z "$get_projectname_from_user_group" ]; then
create_project "$get_projectname_from_user_group"
fi
done