如何解决bash脚本:嵌套命令的结果结果未分配给变量
具有模式字符串:st2-api-alpha
想要像st2-api一样修剪它们
基本上想删除文本,然后为每个字符串在“-”上第二次出现。
以下是我的声明:
for (( i=1; i<${#all_containers_list[@]}; i++ )){
echo "trimmed[$i] - "${all_containers_list[i]}|cut -f1-3 -d'-'
temp="$(${all_containers_list[i]}| cut -f1-3 -d'-')"
echo "temp is:$temp"
all_containers_list[i]=$temp
echo "all_containers_list[$i] is ${all_containers_list[i]}"
}
当我回声时:
修剪[1]-st2-ui
/ home / **** / st2-monitoring / monitors / getAllContainerStatus_v1.1.sh:行 139:st2-ui-server-alpha:找不到命令
温度是:
all_containers_list [1]是
修剪[2]-st2-api
/ home / **** / st2-monitoring / monitors / getAllContainerStatus_v1.1.sh:行 139:st2-api-alpha:找不到命令
温度是:
all_containers_list [2]是
修剪[3]-st2-whiteboard
/ home / **** / st2-monitoring / monitors / getAllContainerStatus_v1.1.sh:行 139:st2-whiteboard-alpha:找不到命令
温度是:
all_containers_list [3]是
修剪[4]-st2-aspose
/ home / **** / st2-monitoring / monitors / getAllContainerStatus_v1.1.sh:行 139:st2-aspose-alpha:找不到命令
温度是:
all_containers_list [4]是
修剪[5]-确定_低音
/ home / **** / st2-monitoring / monitors / getAllContainerStatus_v1.1.sh:行 139:确定_bassi:找不到命令
温度是:
all_containers_list [5]是
修剪[6]-st2-ui
/ home / /st2-monitoring/monitors/getAllContainerStatus_v1.1.sh:行 139:st2-ui- -alpha:未找到命令
温度是:
all_containers_list [6]是
-
echo "trimmed[$i] - "${all_containers_list[i]}|cut -f1-3 -d'-'
---很好。 -
但是以下分配不起作用
temp=$(${all_containers_list[i]}| cut -f1-3 -d'-')
请求您的帮助以解决该问题! 操作系统是CentOS,bash脚本
解决方法
我认为仅仅为了删除字符串的一部分而调用子过程是有点过分的。假设您已经将字符串存储在变量中,说
str=st2-api-alpha
您只需做一个
if [[ $str =~ [^-]*-[^-]* ]]
then
str=${BASH_REMATCH[0]}
fi
如果字符串不包含破折号,则将其保持不变。您可以将这种解决方案推广到具有字符串数组的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。