输入关键短语时退出BASH脚本

时间:2014-11-14 00:44:47

标签: bash try-catch exit

我在输入keyphrase时找到如何退出脚本时遇到问题:例如: "富&#34 ;.

基本上我希望测试这个短语的每个用户输入并调用exit命令。我可以创建一个我在每次用户输入后调用的测试函数,但这看起来不太优雅。

我正在使用功能:

function EXIT {
    printf "\n\nSCRIPT IS NOW TERMINATING\n"
    if [ -n $userLogged ]; then
            local TIME="$username LOGGED OUT at: "$(date +%r)" on the "$(date +%d/%m/%Y)"\n"
            printf "$TIME" >> usage.db
    fi
    exit
}

trap EXIT SIGTERM

可以使用陷阱来完成吗?

1 个答案:

答案 0 :(得分:1)

我不确定,但我猜你是在追求这样的事情:

#!/bin/bash

# Save this script as "my_exit"

function EXIT {
    printf "\n\nSCRIPT IS NOW TERMINATING\n"
    if [ -n $userLogged ]; then
            local TIME="$username LOGGED OUT at: "$(date +%r)" on the "$(date +%d/%m/%Y)"\n"
            printf "$TIME" >> usage.db
    fi
    exit
}

trap EXIT SIGUSR1

while :; do
    read -p "Enter your test word: " word
    if [ "$word" = "Foo" ];
    then 
        pkill --signal SIGUSR1 my_exit
    fi
done

我使用SIGUSR1代替SIGTERM只是为了更好地展示功能。也可以将其改为两个单独的脚本,只需稍作修改,即“EXIT + trap”块为1,永久循环为另一个,后者通过SIGUSR1发出第一个进行退出例程。