使用函数或变量在bash中响应成功通知的更好的或合乎逻辑的方法?

使用函数或变量在bash中响应成功通知的更好的或合乎逻辑的方法?,bash,function,shell,logic,sh,Bash,Function,Shell,Logic,Sh,我希望使用函数或变量来响应一个成功的通知 为了这个例子,我们将使用sleep 1。我想做的是打印一个初始通知(标题或描述),然后在命令通过时打印一个成功通知 我试过这样做: function notice() { if [ -z "$1" ] then echo -e "\r[OK]" else echo -n "[ ] $1" fi } notice "This is a command" sleep 1 notice

我希望使用函数或变量来响应一个成功的通知

为了这个例子,我们将使用
sleep 1
。我想做的是打印一个初始通知(标题或描述),然后在命令通过时打印一个成功通知

我试过这样做:

function notice()
{
    if [ -z "$1" ]
    then
        echo -e "\r[OK]"   
    else
        echo -n "[  ] $1"
    fi
}

notice "This is a command"
sleep 1
notice
结果将显示:

  • []这是一个命令
  • 执行命令(在本例中为sleep 1)
  • 删除前3个字符,并在其中输入OK

  • 我也尝试过另一种方法,比如在最后显示复选标记
    \u2174)
    ,但我不确定是否有更好的方法来编码/解决这个问题。短而简洁的代码总是值得赞赏的。

    在过去的一年里,我写了很多bash脚本。它们中的大多数都有某种“通知”功能,用于测试某个值是否等于另一个值,并在出现错误时打印消息。我认为最好使脚本尽可能安静,除非您确实需要用于日志记录目的的消息。我想给你一个关于代码的选择

    您的解决方案

    #/bin/bash
    功能通知{
    如果[-z“$1”];则
    回显“[]错误]”
    elif[[$1=~^[0-9]+$]];然后
    如果[$1-相等于“$2”];则
    回声“[确定]”
    其他的
    回显“[失败]”
    fi
    其他的
    echo-n“[]1美元”
    $1
    fi
    }
    注意“真的”
    通知$?0
    注意“假”
    通知$?0
    通知
    出口0
    
    我的解决方案

    #/bin/bash
    功能信息{
    本地消息=$1
    本地tst=$2
    本地增值税=$3
    [“$tst”-eq“$val”]| | echo$msg
    }
    真的
    消息“错误为真”$?0
    假的
    消息“错误为false时出错”$?0
    出口0
    
    模具解决方案
    如果要立即中止脚本,可以执行以下操作:

    function notice()
    {
        if [ -z "$1" ]
        then
            echo -e "\r[OK]"   
        else
            echo -n "[  ] $1"
        fi
    }
    
    notice "This is a command"
    sleep 1
    notice
    
    #/bin/bash
    出口粘虫=$$
    MYEXIT=1
    函数误差{
    退出$MYEXIT
    }
    函数die(){
    本地消息=$1
    MYEXIT=2美元
    echo“$0:$msg”
    kill-s术语“${MYPID}”
    }
    陷阱“错误”术语
    真的
    [$?-eq 0]| | die“您将不会看到此消息。”1
    假的
    [$?-eq 0]| | die“此处显示您的错误消息!”2
    出口0
    
    输出

    # Your solution
    $ ./notice.sh 
    [ ] true [ OK ]
    [ ] false [ FAIL ]
    [ ] <empty> [ ERROR ]
    $ echo $?
    0
    
    # My solution
    $ ./message.sh 
    error on false
    $ echo $?
    0
    
    # Die solution
    $ ./die.sh
    ./die.sh: Your error message here!
    $ echo $?
    2
    

    在过去的一年里,我写了很多bash脚本。它们中的大多数都有某种“通知”功能,用于测试某个值是否等于另一个值,并在出现错误时打印消息。我认为最好使脚本尽可能安静,除非您确实需要用于日志记录目的的消息。我想给你一个关于代码的选择

    您的解决方案

    #/bin/bash
    功能通知{
    如果[-z“$1”];则
    回显“[]错误]”
    elif[[$1=~^[0-9]+$]];然后
    如果[$1-相等于“$2”];则
    回声“[确定]”
    其他的
    回显“[失败]”
    fi
    其他的
    echo-n“[]1美元”
    $1
    fi
    }
    注意“真的”
    通知$?0
    注意“假”
    通知$?0
    通知
    出口0
    
    我的解决方案

    #/bin/bash
    功能信息{
    本地消息=$1
    本地tst=$2
    本地增值税=$3
    [“$tst”-eq“$val”]| | echo$msg
    }
    真的
    消息“错误为真”$?0
    假的
    消息“错误为false时出错”$?0
    出口0
    
    模具解决方案
    如果要立即中止脚本,可以执行以下操作:

    function notice()
    {
        if [ -z "$1" ]
        then
            echo -e "\r[OK]"   
        else
            echo -n "[  ] $1"
        fi
    }
    
    notice "This is a command"
    sleep 1
    notice
    
    #/bin/bash
    出口粘虫=$$
    MYEXIT=1
    函数误差{
    退出$MYEXIT
    }
    函数die(){
    本地消息=$1
    MYEXIT=2美元
    echo“$0:$msg”
    kill-s术语“${MYPID}”
    }
    陷阱“错误”术语
    真的
    [$?-eq 0]| | die“您将不会看到此消息。”1
    假的
    [$?-eq 0]| | die“此处显示您的错误消息!”2
    出口0
    
    输出

    # Your solution
    $ ./notice.sh 
    [ ] true [ OK ]
    [ ] false [ FAIL ]
    [ ] <empty> [ ERROR ]
    $ echo $?
    0
    
    # My solution
    $ ./message.sh 
    error on false
    $ echo $?
    0
    
    # Die solution
    $ ./die.sh
    ./die.sh: Your error message here!
    $ echo $?
    2
    

    你关心实际的退出状态吗?目前,脚本将始终打印
    [OK]
    ,无论发生什么。是的,这只是一个示例,因此使用了简单的代码。它应该有错误检查(在失败的情况下),但我需要知道的是这个问题解决背后的逻辑。我应该使用函数、变量还是其他什么,因为这个通知是需要重复的,每次我列出几个命令时我都需要调用它。我需要一个更干净或更短的方法来做这件事。谢谢你的反馈。你关心实际的退出状态吗?目前,脚本将始终打印
    [OK]
    ,无论发生什么。是的,这只是一个示例,因此使用了简单的代码。它应该有错误检查(在失败的情况下),但我需要知道的是这个问题解决背后的逻辑。我应该使用函数、变量还是其他什么,因为这个通知是需要重复的,每次我列出几个命令时我都需要调用它。我需要一个更干净或更短的方法来做这件事。谢谢你的反馈。我真的很感谢你花时间留下一个完整的答案和优秀的例子。我接受了,谢谢你。我真的很感谢你抽出时间给我留下一个完整的答案,并列举了一些很好的例子。我接受了,谢谢你。