According to a trick from this question [is-there-a-way-to-write-a-bash-function-which-aborts-the-whole-execution...](https://stackoverflow.com/questions/9893667/is-there-a-way-to-write-a-bash-function-which-aborts-the-whole-execution-no-mat)

My example code (example.sh):

```
trap "exit 0" TERM
top_pid=$$

evalInput(){

    cmd=$1

    if [[ $cmd =~ ^\ *exit\ *$ ]]; then
        kill -s TERM $top_pid
    elif [another command]
        ...
    fi
}

```

If I type `evalInput "exit"` then this process will be killed with exit status zero.

Test file:

```
testExitCmd(){
    . ./example.sh
    ...
    evalInput "exit"
    ps [PID of `evalInput` function]
    # `ps` command is failed if evalInput is killed. 
    assertNotEquals "0" "$?"
}

. shunit2

```

My idea to test `evalInput` function is very simple, just use `ps` command to make sure that `evalInput` function is killed but the problem is how I can done this? The important issue here is **when you try to execute `evalInput` that mean you also kill `testExitCmd` function**. 

I've tried many ways already e.g. using `&` to put `evalInput` to another process and bla bla bla. but I still get an error like `shunit2:WARN trapped and now handling the (TERM) signal`. As I understand, this indecate that I try to kill my test function process.

Please carefully test it, I don't think just only your imagination can solve this problem but please test a code. If you are on `OSX` you can simply install `shUnit2` via `brew` and simply run it by `./your_test_script.sh`