如何在bash陷阱上运行功能

特约里莫里

我正在尝试学习如何在bash中使用trap。我在ubuntu ohmyzsh上。

这是一个测试用例,但是我希望使用在退出时调用的函数调用时传递的参数来调用函数。现在,它甚至没有在陷阱中调用该函数。

xtest() {
    trap 'xecho' EXIT
    echo 'start'
    while :; do echo 'Hit CTRL+C'; sleep 1; done
}

xecho() {
    echo "done $1"
}

我刚得到

$ xtest foo
start
Hit CTRL+C
Hit CTRL+C
^C% 

我注意到这个答案使用了SIGINT并在trap调用的函数中使用exit,但是它关闭了终端,否则不会停止循环。所以仍然很困惑,这对我的例子来说是无济于事的。

hek2mgl

首先,与zsh是不同的外壳bash尽管许多事情是相似的,但其他几件事是不同的。

就像在SIGINT或SIGTERM的情况下需要执行trap EXIT吗?与bash不同,收到SIGINT时,EXIT陷阱不会在zsh中运行。您需要SIGINT改用。

另请注意,xecho必须显式调用exit

#!/usr/bin/zsh

xtest() {
    trap "xecho ${1}" INT
    echo 'start'
    while :; do echo 'Hit CTRL+C'; sleep 1; done
}

xecho() {
    echo "done $1"
    exit 0
}

xtest

zshEXIT陷阱将在脚本的定期出口在主脚本和/或当在一个函数定义当一个函数的出口限定为当被调用:

#!/usr/bin/zsh

trap "xecho ${0} ${1}" EXIT

xtest() {
    trap "xecho ${0} ${1}" EXIT
    echo "do something"
}

xecho() {
    echo "${1} ${2} done"
}

xtest foo
xtest bar

echo "main script ending"

输出:

do something
xtest foo done
do something
xtest bar done
main script ending
script.zsh  done

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C ++上独立运行功能

来自分类Dev

Java-如何在特殊列表项上运行功能

来自分类Dev

R:如何在两个列表上运行功能?

来自分类Dev

Angular,如何在输入上打回车运行功能?

来自分类Dev

如何在JavaScript文件上运行php加密功能?

来自分类Dev

Java-如何在特殊列表项上运行功能

来自分类Dev

如何在wordpress中的特定帖子上运行功能?

来自分类Dev

如何在页面请求上连续运行功能

来自分类Dev

如何在complie上运行bash命令,例如“ npm install”

来自分类Dev

如何在Windows上运行Bash Shell脚本?

来自分类Dev

如何在Linux上启动时运行Bash脚本?

来自分类Dev

如何在Windows上运行Ubuntu的/ bin / bash

来自分类Dev

如何在Raspbian上的Crontab中运行Bash脚本?

来自分类Dev

如何在远程 linux 服务器上运行 bash

来自分类Dev

如何在 Bash 脚本上使用参数运行 Python

来自分类Dev

Bash中的RETURN陷阱未执行功能

来自分类Dev

bash:为什么source命令实际上运行该功能?以及如何避免呢?

来自分类Dev

如何在Linux上基于CPU功能进行运行时绑定

来自分类Dev

如何在Love2d上仅运行一次绘制功能

来自分类Dev

如何在Flask应用程序上基于状态代码运行功能

来自分类Dev

如何在Mac上的Intellij / Pycharm运行/调试配置中配置Azure功能项目

来自分类Dev

Firefox扩展:如何在YouTube上的每个视频更改上运行功能

来自分类Dev

如何在QRadioButton上单击多次,但只能运行一次功能?

来自分类Dev

如何在流星中运行功能?

来自分类Dev

如何在单击按钮时运行功能?

来自分类Dev

如何在Mac OS X上为Docker添加bash命令完成功能?

来自分类Dev

当'select'循环运行时Bash忽略SIGINT陷阱

来自分类Dev

如何在Terminator上运行bash脚本?甚至有可能吗?

来自分类Dev

如何在Windows上使用subprocess.run运行bash命令

Related 相关文章

  1. 1

    如何在C ++上独立运行功能

  2. 2

    Java-如何在特殊列表项上运行功能

  3. 3

    R:如何在两个列表上运行功能?

  4. 4

    Angular,如何在输入上打回车运行功能?

  5. 5

    如何在JavaScript文件上运行php加密功能?

  6. 6

    Java-如何在特殊列表项上运行功能

  7. 7

    如何在wordpress中的特定帖子上运行功能?

  8. 8

    如何在页面请求上连续运行功能

  9. 9

    如何在complie上运行bash命令,例如“ npm install”

  10. 10

    如何在Windows上运行Bash Shell脚本?

  11. 11

    如何在Linux上启动时运行Bash脚本?

  12. 12

    如何在Windows上运行Ubuntu的/ bin / bash

  13. 13

    如何在Raspbian上的Crontab中运行Bash脚本?

  14. 14

    如何在远程 linux 服务器上运行 bash

  15. 15

    如何在 Bash 脚本上使用参数运行 Python

  16. 16

    Bash中的RETURN陷阱未执行功能

  17. 17

    bash:为什么source命令实际上运行该功能?以及如何避免呢?

  18. 18

    如何在Linux上基于CPU功能进行运行时绑定

  19. 19

    如何在Love2d上仅运行一次绘制功能

  20. 20

    如何在Flask应用程序上基于状态代码运行功能

  21. 21

    如何在Mac上的Intellij / Pycharm运行/调试配置中配置Azure功能项目

  22. 22

    Firefox扩展:如何在YouTube上的每个视频更改上运行功能

  23. 23

    如何在QRadioButton上单击多次,但只能运行一次功能?

  24. 24

    如何在流星中运行功能?

  25. 25

    如何在单击按钮时运行功能?

  26. 26

    如何在Mac OS X上为Docker添加bash命令完成功能?

  27. 27

    当'select'循环运行时Bash忽略SIGINT陷阱

  28. 28

    如何在Terminator上运行bash脚本?甚至有可能吗?

  29. 29

    如何在Windows上使用subprocess.run运行bash命令

热门标签

归档