/xxxx/xxxx.sh: line n: return: can only `return' from a function or sourced script エラー対処

最近取り組んでいる以下参考書についてです。

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

  • 作者:山田 明憲
  • 発売日: 2018/08/25
  • メディア: 単行本(ソフトカバー)

Dockerの手順に従って進めていたところ、
「4.2.7 MySQLコンテナを確認し、初期データを投入する」という手順において
コンテナに接続ができませんでした。
コンテナ内のログを確認すると、
以下のエラーが出力されていることが確認できました。

■エラー

/docker-entrypoint-initdb.d/prepare.sh: line 6: return: can only `return' from a function or sourced script

prepare.shでは以下のような記述内容となっています。
以下はDockerとしては一般的なもので、
Master構成の場合環境変数によって制御する仕様です。
つまり、Masterの環境変数がない = return 0で処理を終了するというものです。
■prepare.shの内容

# (1) MasterとSlaveを環境変数で制御する
if [ ! -z "$MYSQL_MASTER" ]; then
  echo "this container is master"
  return 0
fi

しかしsourceで呼ばれているからなのか、
returnがreturnコマンドではなくfuncitionまたはsourceと誤認されてしまっているようです。
今回は暫定的に以下の通りexitに修正し、image buildを実行し直してdeployすればエラーが解消されました。

■暫定的な修正

# (1) MasterとSlaveを環境変数で制御する
if [ ! -z "$MYSQL_MASTER" ]; then
  echo "this container is master"
  #return 0
  exit 0
fi

■暫定的な修正

# (1) MasterとSlaveを環境変数で制御する
if [ ! -z "$MYSQL_MASTER" ]; then
  echo "this container is master"

どんな呼び出し方でも対応できるようにするには以下の通り
returnでエラーが出たときにexitを実行するように修正すればOKです。

■修正版
>||
# (1) MasterとSlaveを環境変数で制御する
if [ ! -z "$MYSQL_MASTER" ]; then
  echo "this container is master"
 return 2>&- || exit
fi

しかし、書籍ではこれでうまくいっているはずですが、、、
うーん謎です。