I have looked at various ways on here handle function return values within BASH if-then statements, but none seem to work. Here is what I've got
function is_cloned()
{
if [ -d $DIR_NAME ]
then
return $SUCCESS
fi
return $FAILURE
}
It will work if I call it on its own and check the return value like:
is_cloned
retval=$?
if [ $retval -eq $FAILURE ]
then
...
fi
How can I use the function call within the if statement? Or is there no way at all to take advantage of the return values?
if statements in Bash can use the exit code of functions directly.
So you can write like this:
if is_cloned
then
echo success
fi
If you want to check for failure, as in your posted code, you could use the ! operator:
if ! is_cloned
then
echo failure
fi
By the way, your is_cloned function too can rely more on exit codes,
you can write like this:
is_cloned() {
[ -d "$DIR_NAME" ]
}
This works, because the exit code of a function is the exit code of the last executed command,
and the exit code of [ ... ] is 0 if successful, non-zero otherwise (= failure).
Also remember to double-quote variable names used as command arguments,
as I did DIR_NAME here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With