首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash脚本-逻辑重构

Bash脚本-逻辑重构
EN

Stack Overflow用户
提问于 2022-08-03 16:10:08
回答 1查看 76关注 0票数 0

重新拟订原来的问题:

最终目标:

  • 列表项目

使用某种循环过程多次运行单个命令。

它需要的

不重复myself

  • command
  • in bash
  • 需要两个变量

文件名:

  • DEPLOY_FILE_1
  • DEPLOY_FILE_2
  • KUBE_A
  • KUBE_B

要求在同一个命令中运行带有参数和变量的命令

  • 这些变量必须在第一个循环完成后立即更新
  • 命令如下所示:

SOME_COMMAND ARGS $VARIABLE_A ARGS $VARIABLE_B

  • $VARIABLE_A指向文件: KUBE_A

  • KUBE_A有2行(但在不久的将来可能会有更多):

DEPLOY_FILE_1指向

  • $VARIABLE_B

  • DEPLOY_FILE_1有多行遵循此模式和命名约定:

上面描述的相同的命令需要运行与DEPLOY_FILE_1中定义的行相同的次数。

  • 一旦完成了$VARIABLE_A和$VARIABLE_B中的值,就必须更新为be:

  • $VARIABLE_A指向文件: KUBE_B

DEPLOY_FILE_2:

  • $VARIABLE_B指向文件

,这是我到目前为止能想到的:

代码语言:javascript
复制
#!/bin/bash
set -x

KC_A=$(cat "/k8s-config/kubeconfig-A")
KC_B=$(cat "/k8s-config/kubeconfig-B)
def ARRAY_KC=(KC_A KC_B)

APP_A=$(cat "/tmp/configuration-files/testing-A-scale-down")
APP_B=$(cat "/tmp/configuration-files/testing-B-scale-down")
def ARRAY_APP=(APP_A APP_B)

CURRENT_NAMESPACE="alpha"
WAITING_PERIOD_BEFORE_NEXT_SCALE="2"

for i in "${$ARRAY_APP[@]}";
    do
        for j in "${$ARRAY_KC[@]}";
            do
                for k in "${$i[@]}";
                    do
            kubectl --kubeconfig $j -n $CURRENT_NAMESPACE scale deploy $k --replicas=$REPLICASET_NUMBER
        done
    done
done

备注:

  • 虽然有K8,但它可能是其他命令
  • 中的重点:逻辑和bash语法--
  • --它不工作。

希望这会更清楚一点。你能提供一些帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-08 18:55:49

我觉得你把事情弄得太复杂了。

代码语言:javascript
复制
cat /tmp/configuration-files/testing-{A,B}-scale-down |
while IFS= read -r auth_factor; do
   cat /k8s-config/kubeconfig-{A,B} |
   while IFS= read -r name; do
       SOME_COMMAND ARGS "$name" ARGS "$auth_factor"
   done
done

您可能想读https://mywiki.wooledge.org/BashFAQ/001{A,B}只是https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html#Brace-Expansion的速记野兔。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73224503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档