当前位置: 首页 > 面试题库 >

set -e和exec“ $ @”对于docker入口点脚本有什么作用?

方子安
2023-03-14
问题内容

我注意到,许多docker的entrypoint.sh脚本都执行以下操作:

#!/bin/bash
set -e

... code ...

exec "$@"

是什么set -eexec "$@"什么?


问题答案:

它基本上接受所有额外的命令行参数,并将它们作为命令执行。目的基本上是“在此.sh脚本中执行所有操作,然后在同一shell中运行用户在命令行中传递的命令”。



 类似资料:
  • 问题内容: 例如在redis官方图片中: https://github.com/docker-library/redis/blob/master/2.8/docker- entrypoint.sh 为什么不像往常一样在没有exec的情况下运行命令呢? 问题答案: 正如@Peter Lyons所说,使用exec将替换父进程,而不是运行两个进程。 这对于在Docker中正确代理信号很重要。例如,如果R

  • 问题内容: 我正在研究脚本从该脚本的Debian存档(.deb)文件解压缩之前执行的 preinst 文件的内容。 该脚本具有以下代码: 我的第一个查询是关于这一行的: 我认为脚本的其余部分非常简单:它检查Debian / Ubuntu软件包管理器是否正在执行安装操作。如果是,它将检查我的应用程序是否刚刚安装在系统上。如果已安装,脚本将显示消息 “ MyApplicationName已安装” 并结

  • 我的第一个问题是关于行: 我认为脚本的其余部分非常简单:它检查Debian/Ubuntu包管理器是否正在执行安装操作。如果是,它会检查我的应用程序是否刚刚安装到系统上。如果有,脚本将打印消息“MyApplicationName is just installed”并结束(表示以“error”结束,不是吗?)。 如果用户正在要求Debian/Ubuntu包系统安装我的包,脚本也会删除两个目录。

  • 问题内容: 此语句在shell脚本中有什么作用? 问题答案: 从手册中: errtrace与-E相同。 -E如果设置,则ERR函数上的任何陷阱都将被Shell函数,命令替换以及在子Shell环境中执行的命令继承。在这种情况下,通常不会继承ERR陷阱。 当被使能,当错误(命令返回一个非零码)函数或子外壳内发生也被触发的ERR陷阱。换一种说法是,除非启用,否则函数或子Shell的上下文不会继承ERR陷

  • 在过去的几个月里,我一直在使用nsenter来获得一个运行在容器上的shell以进行调试。我听说过并使用过1.3版中引入的docker exec。Docker exec似乎是进入容器进行调试的最佳实践,但我想知道使用Docker exec与使用Nsenter相比是否有任何缺点。比较两者的信息很少。在使用和nsenter时,是否有任何我应该注意或避免的特定问题?

  • 问题内容: 我有一个shell脚本,其中包含以下行: 问题答案: 启用外壳程序的一种模式,其中所有执行的命令都将打印到终端。在您的情况下,它显然用于调试,这是典型的用例:在执行命令时打印每个命令,如果脚本未按预期运行,则可以帮助您可视化脚本的控制流。 禁用它。