【问题标题】:Bash array loop only takes the first entryBash 数组循环只取第一个条目
【发布时间】:2022-06-24 22:09:18
【问题描述】:

晚上好,

我只是尝试停止在数组中定义的一些 docker 容器。 但只有第一个停了四次。

CONTAINERTOSTOP=(webgrabplus Nextcloud ddclient MariaDB-10.6)

for constopping in "${CONTAINERTOSTOP[@]}"; do                      
docker container stop $CONTAINERTOSTOP done

我的脚本只停止了 webgrabplus 容器,但停止了四次 我认为循环有效。

我的错在哪里?

【问题讨论】:

    标签: bash


    【解决方案1】:

    您正在停止$CONTAINERTOSTOP。你想要$constopping

    您还缺少;docker 命令后的换行符。

    for constopping in "${CONTAINERTOSTOP[@]}"
    do
        docker container stop $constopping
    done
    

    (当然,@ufopilot 的回答在特定情况下甚至更好,但我让我的回答代表“if you want a loop...”的情况。)

    【讨论】:

    • 并且由于$CONTAINERTOSTOP == ${CONTAINERTOSTOP[0]} == webgrabplus 停止对webgrabplus 发出4次
    【解决方案2】:

    停止使用(无循环):

    CONTAINERTOSTOP=(webgrabplus Nextcloud ddclient MariaDB-10.6)
    docker stop "${CONTAINERTOSTOP[@]}"
    # or 
    CONTAINERTOSTOP="webgrabplus Nextcloud ddclient MariaDB-10.6"
    docker stop $CONTAINERTOSTOP
    

    【讨论】:

    • 谢谢,有时只见树木不见森林。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2011-12-14
    • 2018-09-16
    • 2013-10-08
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多