The 'while read line; ...; done' loop is run in a piped subshell
therefore the 'return 0' would not cause a return from the
is_mounted() function. In all cases, this function will
always return 1.
The fix is to 'return 1' from the subshell on a successful match
(no match == return 0), and then negating the final return value.
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: TerraTech <TerraTech@users.noreply.github.com>
Closes #8151
mount | \
while read line; do
if echo "$line" | grep -q " on $mntpt "; then
- return 0
+ # returns:
+ # 0 on unsuccessful match
+ # 1 on a successful match
+ return 1
fi
done
- return 1
+ # The negation will flip the subshell return result where the default
+ # return value is 0 when a match is not found.
+ return $(( !$? ))
}