V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiangyuhahah
V2EX  ›  程序员

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

  •  
  •   xiangyuhahah · May 12, 2020 · 2310 views
    This topic created in 2187 days ago, the information mentioned may be changed or developed.
    #!/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 replies    2020-05-12 16:19:55 +08:00
    xiangyuhahah
        1
    xiangyuhahah  
    OP
       May 12, 2020
    网上都是针对整个 shell 脚本的, 比如 set -e. 我想针对一个函数, 一遇到错误就立马退出函数. 求大佬解答.
    我想过一条一条捕捉执行, 但是效率太差.
    LGA1150
        2
    LGA1150  
       May 12, 2020
    kill -9 i || return $?
    xiangyuhahah
        3
    xiangyuhahah  
    OP
       May 12, 2020
    @LGA1150 我要写的函数内容非常多, 一句一句这样捕捉效率太差. 有效率高些的吗
    aheadlead
        4
    aheadlead  
       May 12, 2020 via iPhone
    你可以在函数的开头 set -e
    结束的地方 set +e
    LGA1150
        5
    LGA1150  
       May 12, 2020
    @xiangyuhahah 用 bash -e 新开一个进程执行你的函数
    codehz
        6
    codehz  
       May 12, 2020 via Android
    (用圆括号,然后这样会开新进程跑
    xiangyuhahah
        7
    xiangyuhahah  
    OP
       May 12, 2020
    @LGA1150 解决了, 感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5026 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 03:58 · PVG 11:58 · LAX 20:58 · JFK 23:58
    ♥ Do have faith in what you're doing.