Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是';set-x';你喜欢Dockerfile吗?_Docker - Fatal编程技术网

什么是';set-x';你喜欢Dockerfile吗?

什么是';set-x';你喜欢Dockerfile吗?,docker,Docker,我正在学习现有的Dockerfile,开始创建自己的Dockerfile。我注意到,大多数时候,命令都是以 RUN set -x ... 或 为什么这样做,为什么这是必要的?是否有必要?如果出现任何错误,-e将导致命令停止。更典型的语法是使用&&分隔命令,以便在出现任何错误时停止 -x使shell输出正在运行的每个命令。这对于调试脚本非常有用 从set下的bash手册页: -e如果管道(可能包括 单个简单命令)、列表或 复合命令(参见上面的SHELL语法)以非零状态退出。贝壳有 如果失败的命令

我正在学习现有的
Dockerfile
,开始创建自己的
Dockerfile
。我注意到,大多数时候,命令都是以

RUN set -x ...


为什么这样做,为什么这是必要的?是否有必要?

如果出现任何错误,
-e
将导致命令停止。更典型的语法是使用
&&
分隔命令,以便在出现任何错误时停止

-x
使shell输出正在运行的每个命令。这对于调试脚本非常有用

set
下的bash手册页:

-e如果管道(可能包括 单个简单命令)、列表或 复合命令(参见上面的SHELL语法)以非零状态退出。贝壳有 如果失败的命令是紧接着一段时间的命令列表的一部分,则不退出 或直到关键字,if或elif保留字后的测试部分,任何com的一部分 在&&或| |列表中执行的命令,除了最后&&或| | |之后的命令,任何命令 在管道中,但在最后一个管道中,或者如果命令的返回值用!反转!。如果 子shell以外的复合命令返回非零状态,因为命令失败 当忽略-e时,shell不会退出。如果设置了错误,则执行错误陷阱 在外壳退出之前。此选项适用于shell环境和每个子shell环境 环境(参见上面的命令执行环境),并可能导致子shell退出 在执行子shell中的所有命令之前

如果复合命令或shell函数在忽略-e的上下文中执行,则无 在复合命令或函数体中执行的命令的 -e设置,即使设置了-e并且命令返回失败状态。如果是复合命令 或者shell函数在忽略-e的上下文中执行时设置-e,则该设置将 在复合命令或包含函数调用的命令之前不会产生任何效果 完成

-展开每个简单命令后的x,对于命令,大小写 命令、选择命令或算术 对于命令,显示PS4的展开值,然后显示命令及其展开值 参数或关联的单词列表


现在有道理了。。。谢谢。我不确定这是否真的是一个关于编程的问题。此外,对文档的研究似乎应该解决这个疑问。您是否可以编辑这个问题,告诉我们您阅读了哪些文档,并列出一些您尝试过的代码以及您遇到的问题?
RUN set -ex; ...