AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[exit](unix)

Martin Hope
Yzmir Ramirez
Asked: 2022-02-16 18:48:51 +0800 CST

在 bash 中使用陷阱 EXIT 后如何继续执行?

  • 0

环境: GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin20)

我试图捕获另一个函数的退出,然后继续执行程序。在面向对象的语言中,您可以捕获异常,然后继续执行而无需重新抛出;这基本上就是我想要做的。我期待这个函数foo(),exit但在这种情况下,我想抓住它并继续执行程序。

#!/bin/bash

function doNotExitProgram()
{
   echo "Ignoring EXIT"
    # Magic happens here
}

trap doNotExitProgram EXIT

function foo()
{
    echo "Inside foo()"
    exit 170
}

foo
echo "Continue execution here"

预期的:

里面 foo()
忽略 EXIT
在这里继续执行

实际的:

在 foo() 内部
忽略 EXIT

到目前为止尝试的步骤:

  1. 尝试使用shopt -s extdebug,但这似乎不适用于 EXIT。

  2. trap - EXIT在里面试过doNotExitProgram()

  3. 尝试trap - EXIT返回return 0内部doNotExitProgram()

  4. 尝试trap - EXIT返回return 1内部doNotExitProgram()

  5. return 0在里面试过doNotExitProgram()

  6. return 1在里面试过doNotExitProgram()

  7. trap "" EXIT在里面试过doNotExitProgram()

tldp.org上的陷阱或陷阱手册页上没有描述这种情况。

编辑:如果可能的话不要改变foo()

bash exit
  • 2 个回答
  • 554 Views
Martin Hope
openCivilisation
Asked: 2019-12-28 22:47:43 +0800 CST

在bash中,使用本地时如何检索子shell的退出代码

  • 5

这个问题与其他问题很接近 -我可以从使用 $(command) 启动的子 shell 中获取退出代码吗?

但是,我没有发现任何解决方案可以让我在使用 local 和 eval 时从子 shell 获取退出代码,如本例所示......

test() {
> local WHY="$(eval "echo 'test'"; exit 3)"; echo $?
> }
test
0
exit-status exit
  • 1 个回答
  • 1169 Views
Martin Hope
piFAN
Asked: 2019-08-28 00:39:11 +0800 CST

nohup 退出并出现错误 125

  • 1

nohup尝试在后台启动 Python 脚本时以错误 125 退出,但在使用通配符时,指向同一个文件,nohup工作正常。

    root@rpi_2:/home/pi/shortcuts# nohup -c bash 'python /home/pi/shortcuts/python/garage_topbutton_aio_pir_v2.py' > /dev/null 2>&1 &
[1] 26261
root@rpi_2:/home/pi/shortcuts#
[1]+  Exit 125                nohup -c bash 'python /home/pi/shortcuts/python/garage_topbutton_aio_pir_v2.py' > /dev/null 2>&1

root@rpi_2:/home/pi/shortcuts# ls /home/pi/shortcuts/python/garage_topbutton_aio_pir_v2.py
/home/pi/shortcuts/python/garage_topbutton_aio_pir_v2.py

root@rpi_2:/home/pi/shortcuts# nohup bash -c 'python /home/pi/shortcuts/python/*pir*v2*' > /dev/null 2>&1 &
[1] 26304

root@rpi_2:/home/pi/shortcuts# ps topbutton
USER       PID %CPU %MEM  START   TIME STAT COMMAND
root     26304  0.1  0.6  10:27   0:00 S<l  python /home/pi/shortcuts/python/garage_topbutton_aio_pir_v2.py
root@rpi_2:/home/pi/shortcuts#

我很好奇,因为这从未发生过。

nohup exit
  • 1 个回答
  • 968 Views
Martin Hope
Evan Carroll
Asked: 2018-11-25 14:09:27 +0800 CST

如何在不使用鼠标的情况下退出 i3?

  • 6

每当我退出 i3 时,顶部会显示一个栏,让我能够单击Yes、退出或X取消。

i3 exit
  • 3 个回答
  • 19825 Views
Martin Hope
user6542
Asked: 2018-11-14 08:02:43 +0800 CST

无法终止正在运行的程序/应用程序

  • -1

我在终止从终端启动的应用程序时遇到问题 - 例如,我使用: cd /usr/bin 和 ls 来确定 gimp 应用程序在这里。

然后我通过键入“gimp”启动了 gimp - 成功启动。

但是,我无法停止/退出程序。没有“$”符号可以作为开始(我想表明进程正在运行)。

我试过:(gimp:23558):GEGL-gegl-operation.c-WARNING **:无法将操作类0x29DFB70的名称从“gimp:point-layer-mode”更改为“gimp:anti-erase-mode”

kill pwd kill exit q quit Q QUIT TERM SIGTERM

这些都不起作用-我也不希望它们起作用,因为没有“$”符号开始。

terminal exit
  • 2 个回答
  • 707 Views
Martin Hope
Taapo
Asked: 2018-04-12 01:11:20 +0800 CST

如何在退出屏幕之前获得确认?

  • 3

如何在退出屏幕之前获得确认(在命令行上键入 exit 时)。这可能吗?

gnu-screen exit
  • 3 个回答
  • 1013 Views
Martin Hope
Viesturs
Asked: 2018-01-05 02:15:35 +0800 CST

eval 的返回值

  • 11

bash手册指出:

eval [arg ...]

          The  args  are read and concatenated together into a single com-
          mand.  This command is then read and executed by the shell,  and
          its  exit status is returned as the value of eval. If there are
          no args, or only null arguments, eval returns 0.

我试试

eval `nonsense`
echo $?

结果是0。

而当我单独执行反引号命令时:

`nonsense`
echo $?

结果是127。

根据 bash 手册中的内容,我希望在将反引号作为参数时eval返回。127nonsense

如何获取参数的退出状态eval?

bash exit
  • 2 个回答
  • 24507 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve