Question

foo.sh :

bar() {
     return 1;
}

test.sh

#!/bin/bash
if /path/to/foo.sh bar; then
      echo "success"
else
      echo "fail"
fi

It always returns "success" regardless of the return value of bar(). How can I make this works as intended?

Was it helpful?

Solution

foo.sh doesn't call the function; it just defines it. You need to first source the file, then treat bar like any other function.

. foo.sh
if bar; then
    echo success
else
    echo fail
fi
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top