加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash中添加(收集)退出代码

发布时间:2020-12-16 01:12:16 所属栏目:安全 来源:网络整理
导读:我需要在脚本中依赖几个单独的执行,并且不希望将它们全部捆绑在一个丑陋的’if’语句中.我想把退出代码’$?’每次执行并添加它;最后,如果这个值超过一个阈值 – 我想执行一个命令. 伪代码: ALLOWEDERROR=5run_somethingRESULT=$?..other things..run_somet
我需要在脚本中依赖几个单独的执行,并且不希望将它们全部捆绑在一个丑陋的’if’语句中.我想把退出代码’$?’每次执行并添加它;最后,如果这个值超过一个阈值 – 我想执行一个命令.

伪代码:

ALLOWEDERROR=5

run_something
RESULT=$?
..other things..

run_something_else
RESULT=$RESULT + $?

if [ $RESULT -gt ALLOWEDERROR ] 
   then echo "Too many errors"
fi

问题:即使互联网声称不然,bash拒绝对待RESULT和$?作为整数.什么是正确的语法?

谢谢.

你可能想看看内置的陷阱,看它是否有用:
help trap

要么

man bash

你可以为这样的错误设置一个陷阱:

#!/bin/bash

AllowedError=5

SomeErrorHandler () {
    (( errcount++ ))       # or (( errcount += $? ))
    if  (( errcount > $AllowedError ))
    then
        echo "Too many errors"
        exit $errcount
    fi
}

trap SomeErrorHandler ERR

for i in {1..6}
do
    false
    echo "Reached $i"     # "Reached 6" is never printed
done

echo "completed"          # this is never printed

如果你计算错误(并且只有当它们是错误时),而不是使用“$?”,那么你不必担心返回值不是零或一.例如,单个返回值127会立即超过您的阈值.除了ERR之外,您还可以为其他信号注册陷阱.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读