bash:在if-expression中使用时,set -e不起作用?

法文

看一下这个小脚本:

#!/bin/bash

function do_something() {(
    set -e

    mkdir "/opt/some_folder"                                     # <== returns 1 -> abort?
    echo "mkdir returned $?"                                     # <== sets $0 to 0 again

    rsync $( readlink -f "${BASH_SOURCE[0]}" ) /opt/some_folder/ # <== returns 23 -> abort?
    echo "rsync returned $?"                                     # <== sets $0 to 0 again
)}


# here  every command inside `do_something` will be executed - regardless of errors
echo "run do_something in if-context.."
if ! do_something ; then
  echo "running do_something did not work"
fi

# here `do_something` aborts on first error
echo "run do_something standalone.."
do_something
echo $?

我正在尝试执行此处建议的操作(不要错过引入子shell的多余括号),但是我没有(例如do_something,与if-expression一起)单独执行该函数

现在,当我运行if ! do_somethingset -e命令时似乎没有任何效果。

谁可以给我解释一下这个?

西蒙·多普勒

这是Bash参考手册中所预期和描述的

-e

[...]如果失败的命令是紧接在whileoruntil关键字之后的命令列表的一部分,则该外壳程序不会退出,这是if语句[...]中测试的一部分

[...]

如果复合命令或Shell函数在-e忽略的上下文中执行-e,则即使-e已设置并且命令返回失败状态,复合命令或函数体内执行的所有命令都不会受到该设置的影响如果-e-e忽略上下文的情况下执行时设置了复合命令或shell函数,则该设置在复合命令或包含函数调用的命令完成之前不会生效。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash 中的“set -f”不起作用

来自分类Dev

尝试在mysqldump上使用bash脚本不起作用

来自分类Dev

Bash阵列-不起作用

来自分类Dev

bash颜色不起作用

来自分类Dev

在curl命令中使用变量在bash脚本中不起作用

来自分类Dev

如果在bash脚本中使用`cd`不起作用

来自分类Dev

($ Bash)Shell脚本中使用CD $ Variable时不起作用

来自分类Dev

在for循环中使用awk命令的Bash case语句不起作用

来自分类Dev

从bash脚本调用时,为什么此R脚本不起作用?

来自分类Dev

从Jenkins Pipeline调用时如果条件不起作用的Bash脚本

来自分类Dev

从Jenkins Pipeline调用时如果条件不起作用的Bash脚本

来自分类Dev

在管道中使用时,查找命令不起作用

来自分类Dev

fs.existsSync在电子中使用时不起作用

来自分类Dev

为什么“ lsof”在ssh中使用时不起作用?

来自分类Dev

在addClass中使用时,addEventListener不起作用

来自分类Dev

window.scrollTo 在 iframe 中使用时不起作用

来自分类Dev

wxPython ScrolledWindow 在面板中使用时不起作用

来自分类Dev

QTranslator 在 if 语句中使用时不起作用

来自分类Dev

应用电力线后bash中的set-title功能不起作用

来自分类Dev

为什么“set -v”似乎在 bash 的子shell 中不起作用?

来自分类Dev

使用JSch获取远程bash shell但自动完成不起作用

来自分类Dev

当目录名称包含空格时,使用bash变量进入目录不起作用

来自分类Dev

使用Alt的Bash键盘快捷键在Mac上不起作用

来自分类Dev

使用case语句进行决策时,bash脚本不起作用

来自分类Dev

BASH-使用rm命令的简单脚本不起作用

来自分类Dev

使用read命令在Bash中逐行读取文件不起作用

来自分类Dev

Bash *目录通配符在使用双括号的if语句中不起作用

来自分类Dev

BASH:grep在shell脚本中不起作用,但是echo显示正确的命令,并且可以在命令行中使用

来自分类Dev

简单的bash中的if语句不起作用

Related 相关文章

  1. 1

    bash 中的“set -f”不起作用

  2. 2

    尝试在mysqldump上使用bash脚本不起作用

  3. 3

    Bash阵列-不起作用

  4. 4

    bash颜色不起作用

  5. 5

    在curl命令中使用变量在bash脚本中不起作用

  6. 6

    如果在bash脚本中使用`cd`不起作用

  7. 7

    ($ Bash)Shell脚本中使用CD $ Variable时不起作用

  8. 8

    在for循环中使用awk命令的Bash case语句不起作用

  9. 9

    从bash脚本调用时,为什么此R脚本不起作用?

  10. 10

    从Jenkins Pipeline调用时如果条件不起作用的Bash脚本

  11. 11

    从Jenkins Pipeline调用时如果条件不起作用的Bash脚本

  12. 12

    在管道中使用时,查找命令不起作用

  13. 13

    fs.existsSync在电子中使用时不起作用

  14. 14

    为什么“ lsof”在ssh中使用时不起作用?

  15. 15

    在addClass中使用时,addEventListener不起作用

  16. 16

    window.scrollTo 在 iframe 中使用时不起作用

  17. 17

    wxPython ScrolledWindow 在面板中使用时不起作用

  18. 18

    QTranslator 在 if 语句中使用时不起作用

  19. 19

    应用电力线后bash中的set-title功能不起作用

  20. 20

    为什么“set -v”似乎在 bash 的子shell 中不起作用?

  21. 21

    使用JSch获取远程bash shell但自动完成不起作用

  22. 22

    当目录名称包含空格时,使用bash变量进入目录不起作用

  23. 23

    使用Alt的Bash键盘快捷键在Mac上不起作用

  24. 24

    使用case语句进行决策时,bash脚本不起作用

  25. 25

    BASH-使用rm命令的简单脚本不起作用

  26. 26

    使用read命令在Bash中逐行读取文件不起作用

  27. 27

    Bash *目录通配符在使用双括号的if语句中不起作用

  28. 28

    BASH:grep在shell脚本中不起作用,但是echo显示正确的命令,并且可以在命令行中使用

  29. 29

    简单的bash中的if语句不起作用

热门标签

归档