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

在shell脚本中`set -o errtrace`有什么作用?

方长卿
2023-03-14
问题内容

此语句在shell脚本中有什么作用?

set -o errtrace

问题答案:

从手册中:

errtrace与-E相同。

-E如果设置,则ERR函数上的任何陷阱都将被Shell函数,命令替换以及在子Shell环境中执行的命令继承。在这种情况下,通常不会继承ERR陷阱。

errtrace被使能,当错误(命令返回一个非零码)函数或子外壳内发生也被触发的ERR陷阱。换一种说法是,除非errtrace启用,否则函数或子Shell的上下文不会继承ERR陷阱。

#!/bin/bash

set -o errtrace

function x {
    echo "X begins."
    false
    echo "X ends."
}

function y {
    echo "Y begins."
    false
    echo "Y ends."
}

trap 'echo "ERR trap called in ${FUNCNAME-main context}."' ERR
x
y
false
true

输出:

X begins.
ERR trap called in x.
X ends.
Y begins.
ERR trap called in y.
Y ends.
ERR trap called in main context.

errtrace未启用:

X begins.
X ends.
Y begins.
Y ends.
ERR trap called in main context.


 类似资料:
  • 问题内容: 我正在尝试编写一个小脚本以将当前目录更改为我的项目目录: 我将此文件另存为proj,使用添加了执行权限,然后将其复制到。当我通过以下方式调用它时 ,它什么也没做。我究竟做错了什么? 问题答案: Shell脚本在一个子Shell中运行,每个子Shell对当前目录都有自己的概念。的成功,但只要子shell退出,你是在交互式背壳和从来都没有改变,因此。 解决此问题的一种方法是改用别名:

  • 本文向大家介绍什么是Shell脚本?,包括了什么是Shell脚本?的使用技巧和注意事项,需要的朋友参考一下 Shell脚本是由Unix Shell(是命令行解释器)运行的计算机程序中的命令列表。Shell脚本通常具有描述步骤的注释。Shell脚本执行的不同操作是程序执行,文件操作和文本打印。包装器也是一种Shell脚本,用于创建程序环境,运行程序等。 贝壳类型 Unix中有两种主要的Shell类型

  • 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 第2行:切换到当前用户的home目录 第3行:创建一个目录shell_tut 第4行:切换到s

  • 问题内容: 在shell脚本中,美元符号后跟at符号()是什么意思? 例如: 问题答案: 是传递给脚本的 所有 参数。 举例来说,如果你打电话,然后将等于。 如果您这样做: 然后里面引用: 该参数将传递给每个参数,并用双引号引起来,从而允许调用者从空格中获取参数并将其传递。

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

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