pankaj_ar
pankaj_ar

Reputation: 765

unix function return if any error occurs

I have a unix script in which I am calling functions. I want the function should return immediately if any of the command failed in between.

But checking $? after every command I can not do. Is there any other way to do this.

Upvotes: 0

Views: 47

Answers (2)

Thomas Baruchel
Thomas Baruchel

Reputation: 7507

This is another idea after my previous answer. It works with bash script and requires your functions to be quite simple (pipes may cause some issues):

#!/bin/bash

set -o monitor

check() {
  [ $? -eq 0 ] && exit
}

trap check SIGCHLD

/bin/echo $(( 1+1 ))
/bin/echo $(( 1/0 ))
/bin/echo $(( 2+2 ))

Furthermore: functions need to be external command (this is why I use /bin/echo rather than echo). Regards.

Upvotes: 0

Thomas Baruchel
Thomas Baruchel

Reputation: 7507

Maybe running the script from a file line by line (as long of course as each of your functions are one line long).

Maybe the following script can be a starting point:

#!/bin/sh

while read l
do
  eval "$l || break"
done <<EOF
  echo test | grep e
  echo test2 | grep r
  echo test3 grep 3
EOF

Upvotes: 1

Related Questions