“源脚本”不支持“#!/bin/bash -ex”并在命令失败时退出

巴蒂莱

在 bash 中谷歌搜索“set -e”后,我感到困惑。根据我的理解,使用“set -e”,只要出现错误,bash 就会退出。但是如果你在 mac 中运行下面两个简单的脚本source myscript,你仍然可以看到“无法到达这里”......知道吗?

#!/bin/bash -ex 
fun_with_error_code() {
  return 1;
}
fun_with_error_code
echo "can not get here"

另一个

#!/bin/bash -ex
commandNotExit
echo "can not get here"

我菜鸟的错误。下面查尔斯·达菲 (Charles Duffy) 的回答解决了这个问题。这两个脚本工作正常,只是因为“source myscript”不尊重shebang行。

查尔斯·达菲

shebang 行用于让脚本告诉操作系统用什么解释器来运行它。

当您使用 时source,您是在告诉当前的 shell 解释器在内部评估脚本的命令。

因此,操作系统不需要为脚本启动一个新的解释器。

因此,操作系统从不调用 shebang 行。

因此,-ex当您的脚本使用source.


解决方案有两个:

  • set -e如果您确实想要这种效果,作为单独的一行使用(但请参阅BashFAQ #105了解为什么不应该这样做)。
  • source除非您有非常明确的理由在现有解释器中运行脚本(并更改该解释器的状态),否则不要使用而当你具备这样的原因,运行set -e几乎肯定是你不想做的事。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

命令不支持

来自分类Dev

shell 脚本中不支持命令“aapt”

来自分类Dev

Terraform AWS提供程序:启动源实例时出错:不支持:当前不支持请求的配置

来自分类Dev

通过pscp复制文件时“不支持多个远程源”

来自分类Dev

如何修复Biml内置SSIS脚本任务的失败任务:不支持此类接口

来自分类Dev

Bash脚本在命令失败时退出(sshpass)

来自分类Dev

fallocate失败:不支持该操作

来自分类Dev

在OS X上构建Android独立工具链失败-“源NDK不支持darwin-x86_64”

来自分类Dev

使用作业书签的AWS Glue失败,并显示“数据源不支持写入空或嵌套的空模式”

来自分类Dev

在OS X上构建Android独立工具链失败-“源NDK不支持darwin-x86_64”

来自分类Dev

安装HAXM时不支持VT

来自分类Dev

安装HAXM时不支持VT

来自分类Dev

安装HAXM时不支持VT

来自分类Dev

mozroots命令失败,并显示不支持的哈希错误

来自分类Dev

mozroots命令失败,并显示不支持的哈希错误

来自分类Dev

Android Studio失败-不支持不支持的主要次要版本51.0

来自分类Dev

尝试从终端安装时,总是出现错误“ packagecloud.io不支持操作系统,或者此脚本的操作系统检测失败”

来自分类Dev

当其中的任何命令失败时,如何使 shell 脚本退出?

来自分类Dev

字段设置为uft8mb4_general_ci时出现错误“客户端不支持源字符集”

来自分类Dev

camlimages-致命错误:异常失败(“不支持”)

来自分类Dev

DotNetZip失败,显示“流不支持搜索操作”

来自分类Dev

弹性搜索失败,说索引不支持日期格式

来自分类Dev

不支持复制项目失败的给定路径格式

来自分类Dev

应用安装失败。不支持此操作

来自分类Dev

DotNetZip失败,显示“流不支持搜索操作”

来自分类Dev

弹性搜索失败,说索引不支持日期格式

来自分类Dev

Android HCE不支持select MF命令吗?

来自分类Dev

黑色不支持“格式选择”命令-VS代码错误

来自分类Dev

为什么ioctl命令报告“ KVM不支持IOMMU”?

Related 相关文章

  1. 1

    命令不支持

  2. 2

    shell 脚本中不支持命令“aapt”

  3. 3

    Terraform AWS提供程序:启动源实例时出错:不支持:当前不支持请求的配置

  4. 4

    通过pscp复制文件时“不支持多个远程源”

  5. 5

    如何修复Biml内置SSIS脚本任务的失败任务:不支持此类接口

  6. 6

    Bash脚本在命令失败时退出(sshpass)

  7. 7

    fallocate失败:不支持该操作

  8. 8

    在OS X上构建Android独立工具链失败-“源NDK不支持darwin-x86_64”

  9. 9

    使用作业书签的AWS Glue失败,并显示“数据源不支持写入空或嵌套的空模式”

  10. 10

    在OS X上构建Android独立工具链失败-“源NDK不支持darwin-x86_64”

  11. 11

    安装HAXM时不支持VT

  12. 12

    安装HAXM时不支持VT

  13. 13

    安装HAXM时不支持VT

  14. 14

    mozroots命令失败,并显示不支持的哈希错误

  15. 15

    mozroots命令失败,并显示不支持的哈希错误

  16. 16

    Android Studio失败-不支持不支持的主要次要版本51.0

  17. 17

    尝试从终端安装时,总是出现错误“ packagecloud.io不支持操作系统,或者此脚本的操作系统检测失败”

  18. 18

    当其中的任何命令失败时,如何使 shell 脚本退出?

  19. 19

    字段设置为uft8mb4_general_ci时出现错误“客户端不支持源字符集”

  20. 20

    camlimages-致命错误:异常失败(“不支持”)

  21. 21

    DotNetZip失败,显示“流不支持搜索操作”

  22. 22

    弹性搜索失败,说索引不支持日期格式

  23. 23

    不支持复制项目失败的给定路径格式

  24. 24

    应用安装失败。不支持此操作

  25. 25

    DotNetZip失败,显示“流不支持搜索操作”

  26. 26

    弹性搜索失败,说索引不支持日期格式

  27. 27

    Android HCE不支持select MF命令吗?

  28. 28

    黑色不支持“格式选择”命令-VS代码错误

  29. 29

    为什么ioctl命令报告“ KVM不支持IOMMU”?

热门标签

归档