4

Lets say I have the following scripts

a.sh

echo in a
if test 1 -ne 2; then
        echo oops
        exit 1
fi

b.sh

echo in b
./a.sh
echo in b 2

When running b.sh, I want it to exit if a.sh exited. How do I do this?

(The current output is

in b
in a
oops
in b 2

And that's not what I want)

Thanks, Rivka

Rivka
  • 823
  • 2
  • 7
  • 20

3 Answers3

5

check return status of a command, corresponding variable is $?. alternatively, you can short-circuit using command || exit

Anycorn
  • 50,217
  • 42
  • 167
  • 261
1
echo in b
./a.sh && echo in b 2

This basically checks that the first script does not exit non-zero. If that is true, and only then will it run the second function.

X-Istence
  • 16,324
  • 6
  • 57
  • 74
0

I don't think there's a way you can do it without explicitly checking the return status of the subshell, e.g.:

# This will run b.sh, and if that exits with a non-zero status, we will also
# exit with that same status; otherwise, we continue.
./b.sh || echo $?
Adam Rosenfield
  • 390,455
  • 97
  • 512
  • 589