In a bash function, return will return the status code of the previous
command. For many years, I thought it returned the default status,
i.e. 0, but it does not.
foo(){
ls/does/not/exist
return
}
foo||{
printf"Function 'foo' failed"
}
So if you want foo to return 0/success even when the ls
/does/not/exist fails, you must be explicit:
foo(){
ls/does/not/exist
return0
}
Wish I'd learned about this sooner (took me around 22 years of bash coding).