V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangyuhahah
V2EX  ›  程序员

求大佬解答, shell 函数中执行一条语句失败后, 立马退出函数, 怎么实现.

  •  
  •   xiangyuhahah · 2020-05-12 15:40:30 +08:00 · 1784 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。
    #!/bin/bash
    set -e
    set -u
    set -x

    Hello () {
    kill -9 i # 这里我想让 Hello 这个函数执行立马退出, 然后外面判断退出的数字, 来进行下一步操作
    echo "到这里应该执行失败"
    }

    Hello && A=$? || A=$?
    echo "$A"
    echo "执行到这里了"

    trap " echo '错误发生了, 我来收尾' " INT TERM EXIT
    kill -9 i

    echo "这里不再执行"
    7 条回复    2020-05-12 16:19:55 +08:00
    xiangyuhahah
        1
    xiangyuhahah  
    OP
       2020-05-12 15:42:21 +08:00
    网上都是针对整个 shell 脚本的, 比如 set -e. 我想针对一个函数, 一遇到错误就立马退出函数. 求大佬解答.
    我想过一条一条捕捉执行, 但是效率太差.
    LGA1150
        2
    LGA1150  
       2020-05-12 15:48:12 +08:00
    kill -9 i || return $?
    xiangyuhahah
        3
    xiangyuhahah  
    OP
       2020-05-12 15:49:04 +08:00
    @LGA1150 我要写的函数内容非常多, 一句一句这样捕捉效率太差. 有效率高些的吗
    aheadlead
        4
    aheadlead  
       2020-05-12 16:00:52 +08:00 via iPhone
    你可以在函数的开头 set -e
    结束的地方 set +e
    LGA1150
        5
    LGA1150  
       2020-05-12 16:01:40 +08:00
    @xiangyuhahah 用 bash -e 新开一个进程执行你的函数
    codehz
        6
    codehz  
       2020-05-12 16:15:25 +08:00 via Android
    (用圆括号,然后这样会开新进程跑
    xiangyuhahah
        7
    xiangyuhahah  
    OP
       2020-05-12 16:19:55 +08:00
    @LGA1150 解决了, 感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4553 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:55 · PVG 17:55 · LAX 01:55 · JFK 04:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.