在Tribler的GitHub上的存储库中,我看到带有解释器#!/bin/sh -xe
的{{3}}。
在Mac和Linux上,man sh
重定向到BASH(1)
(与man bash
相同)。
在此手册文件中的以下部分:
选项
,没有提及选项-x
或选项-e
。
解释器#!/bin/sh -xe
是什么意思?
答案 0 :(得分:3)
我发现了:
man sh
:
-x xtrace Write each command to standard error (preceded by
a ‘+ ’) before it is executed. Useful for debug‐
ging.
-e errexit If not interactive, exit immediately if any
untested command fails. The exit status of a com‐
mand is considered to be explicitly tested if the
command is used to control an if, elif, while, or
until; or if the command is the left hand operand
of an “&&” or “||” operator.
似乎这些只是错误控制选项,可确保在命令失败时不会发生更糟的事情。
答案 1 :(得分:1)
每手册页:read more
在特殊构建中,将-a,-b,-C,-e,-f,-m,-n,-o选项,-u,-v和-x选项描述为set实用程序的一部分。 -在实用程序中。从设置的特殊内置选项衍生的选项字母也应使用前导加号('+')代替前导连字符(表示该选项的相反情况,如IEEE Std 1003.1-2001的本卷中所述)
当您阅读set
手册页时,会得到:
-x 在扩展命令之后和执行命令之前,外壳程序应将每个命令的跟踪信息写入标准错误。尚未确定是否跟踪了关闭跟踪的命令。
和
-e 启用此选项时,如果一个简单命令由于“ Shell错误的后果”中列出的任何原因而失败,或者返回退出状态值> 0,并且不属于此组合, list在一会儿,直到或if关键字之后,并且不是AND或OR列表的一部分,也不是前面带有!的管道。保留字,那么外壳应立即退出。