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

在bash脚本中set -e是什么意思?

卫高明
2023-03-14
问题内容

我正在研究脚本从该脚本的Debian存档(.deb)文件解压缩之前执行的 preinst 文件的内容。

该脚本具有以下代码:

#!/bin/bash
set -e
# Automatically added by dh_installinit
if [ "$1" = install ]; then
   if [ -d /usr/share/MyApplicationName ]; then
     echo "MyApplicationName is just installed"
     return 1
   fi
   rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf
   rm -Rf $HOME/.local/share/file-manager/actions/*
fi
# End automatically added section

我的第一个查询是关于这一行的:

set -e

我认为脚本的其余部分非常简单:它检查Debian /
Ubuntu软件包管理器是否正在执行安装操作。如果是,它将检查我的应用程序是否刚刚安装在系统上。如果已安装,脚本将显示消息
MyApplicationName已安装”
并结束(return 1表示以“错误”结尾,不是吗?)。

如果用户要求Debian / Ubuntu软件包系统安装我的软件包,该脚本还将删除两个目录。

这是对的还是我缺少什么?


问题答案:

来自help set

  -e  Exit immediately if a command exits with a non-zero status.

但这被某些人(bash FAQ和irc freenode #bash FAQ的作者)认为是不好的做法。建议使用:

trap 'do_something' ERR

do_something发生错误时运行功能。

参见http://mywiki.wooledge.org/BashFAQ/105



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

  • 在bash脚本中,有什么用 ? 我认为这与环境变量有关,但我以前从未遇到过

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

  • 问题内容: 我是JavaScript / jQuery的新手,我一直在学习如何制作函数。方括号中带有(e)的功能很多。让我告诉你我的意思: 似乎总是该函数甚至不使用(e)的值,那么为什么它经常出现呢? 问题答案: 是将传递给事件处理程序的对象的简短var引用。 事件对象本质上具有许多可以在事件处理程序中使用的有趣的方法和属性。 在示例中,您发布的是一个点击处理程序,它是一个 DEMO-鼠标事件,D

  • 问题内容: 在Set的Java文档中,它在方法的规范中说,例如(我强调) add(E e) 将指定的元素添加到此集合(如果尚不存在) (可选操作) 。 可选在这里是什么意思? 那如果我使用SUN / Oracle以外的JVM,那么该Java实现可能不提供此操作吗? 问题答案: 是一个接口。实现该接口的类不一定需要提供可选操作的实现。 我认为这些可选操作可以回到通用界面,在通用界面中,操作被设置为可

  • 在JWKS中是什么意思-Json Web Key Set