【问题标题】:The ‘exit' statement in a shell script running in a Docker container exits the script but also the container; Can I prevent exiting the container?在 Docker 容器中运行的 shell 脚本中的“exit”语句会退出脚本以及容器;我可以阻止退出容器吗?
【发布时间】:2020-06-11 17:21:04
【问题描述】:

我想在 Docker 容器中运行 Linux 脚本,并在我想停止脚本时使用 exit 语句。 不幸的是,我也退出了 Docker 容器。 有没有办法防止退出容器?

这是我使用的最简单形式的测试代码。

#!/bin/bash
function continue_exit {
        echo "Do you want step $1?"
select yn in "Yes" "No"; do
        case $yn in
           Yes ) break;;
           No ) exit;;
        esac
done
}

continue_exit "1"
echo "we continue"

输入 1 运行 echo 语句,输入 2 退出脚本和容器。

【问题讨论】:

  • 感谢 Gilles 的评论:我更正了,还看到我有一个旧版本,其中有 return 而不是 exit。已修复,但问题仍然存在。
  • 如果主进程退出了,容器还在做什么?
  • 容器仍在运行,您可以返回:docker exec -it mykali /bin/bash

标签: linux docker shell


【解决方案1】:

您的脚本中有错字。

最后一个字符(和另一个)不是简单的双引号,而是一个unicode字符:

$ echo '“' | od -c
0000000 342 200 234  \n

所以用"替换它:

sed -i 's/“/"/g' script

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 2020-11-19
    • 2022-10-20
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多