Shell命令SET -X在脚本中的含义

时间:2018-10-05 10:13:06

标签: bash sh

所以我有一个文件 deploy.sh ,它具有外壳程序脚本。既然我知道这一点,我就有一点困惑,那就是set -x的实际含义。

运行文件后,我观察到在文件中写入的命令在终端中以 + 符号被提及。

就像我有这个一样,

#!/bin/bash
set -x

ng build

因此,输出中提到了+ng build,当我从文件中注释set -x时,所有内容都会执行,但是后面的命令不会显示在终端中。

我已经对此进行了研究,但具体找不到该特定命令的真正含义和工作。

我们非常感谢您的帮助。先谢谢了。

2 个答案:

答案 0 :(得分:4)

您可以为bash阅读set online manual

  

-x

     

打印简单命令的痕迹,对于命令,大小写命令,选择   命令,以及命令及其参数的算术运算,或   关联的单词列表在展开后和之前   被执行。 PS4变量的值被扩展,结果   值将显示在命令及其扩展参数之前。

所以它完全符合您的描述。

答案 1 :(得分:1)

很难找到,但这来自bash手册页:

def my_view(request):
    if request.method == 'POST':
        form = DateRangeForm(request.POST)
        if form.is_valid():
            qs = MyModel.objects.filter(date__range=(
                form.cleaned_data['start_date'],
                form.cleaned_data['end_date']
            ))
            # do something
         else:
            # do something
            pass
    else:
        # do something
        pass

因此,基本上,这是一个调试选项。它不仅执行所有命令,而且在执行它们之前将它们打印出来(到stderr)。