Zookeeperがまだインストールされていない場合は、インストールする次のbashスクリプトがあります。
##zookeper
installZook(){
ZOOK_VERSION="3.4.5"
ZOOK_TOOL="zookeeper-${ZOOK_VERSION}"
ZOOK_DOWNLOAD_URL="http://www.us.apache.org/dist/zookeeper/${ZOOK_TOOL}/${ZOOK_TOOL}.tar.gz"
if [ -e $DEFAULT_INSTALLATION_DEST/${ZOOK_TOOL} ]; then
echo "${ZOOK_TOOL} alreay installed";
exit 1; # <<<< here
elif [ ! -e $DEFAULT_SOURCE_ROOT/${ZOOK_TOOL}.tar.gz ]; then
wgetIt $ZOOK_DOWNLOAD_URL
else
echo "[info] : $DEFAULT_SOURCE_ROOT/$ZOOK_TOOL already exists"
fi
sudo mkdir -p /var/lib/zookeeper
sudo mkdir -p /var/log/zookeeper
tarIt "$DEFAULT_SOURCE_ROOT/$ZOOK_TOOL.tar.gz"
sudo chmod 777 -R $DEFAULT_INSTALLATION_DEST/$ZOOK_TOOL
cp $DEFAULT_INSTALLATION_DEST/$ZOOK_TOOL/conf/zoo_sample.cfg $DEFAULT_INSTALLATION_DEST/$ZOOK_TOOL/conf/zoo.cfg
cat >> ~/.bash_profile <<'EOF'
###############################
########### ZOOK ###############
###############################
ZOOK_HOME=/usr/local/zookeper-3.4.5
export ZOOK_HOME
export PATH=$PATH:$ZOOK_HOME/bin
EOF
}
示された行で<<<< here
飼育会社がすでにインストールされている場合、私が望むのはその下のスクリプトを終了することです。ただし、これを使用するとexit
端末自体が終了します。
答え1
長い話を短く
代わりに、akaをreturn
使用exit
してスクリプトを実行してくださいsource your-script.sh
。. your-script.sh
詳細
ステートメントを含むスクリプトを開始する場合は、exit
現在の子項目の子項目で始まる必要があります。
ターミナルセッションで開始された現在のシェルから開始する場合(任意の. ./<scriptname>
コマンドを使用すると、デフォルトのシェルが閉じexit
られ、シェルはターミナルセッションで始まります)。
スクリプトbash ./<scriptname>
(または代わりに別のシェル)を実行すると強く打つ)、これはexit
端末が使用するシェルではなくサブシェルを停止します。
スクリプトに実行権限がある場合は、シェル名を指定せずに直接実行すると、サブシェルでも実行されます。
return
代わりに、現在のシェルを閉じなくてもexit
スクリプトを起動できます。ただし、終了専用関数またはソーススクリプト(構文を使用して実行されるスクリプト). ./<script name>
を使用する必要があります。return
. ./<scriptname>
答え2
exit 1
を使用する代わりにreturn 1
。
答え3
特定のスクリプトがシェルセッション(およびターミナル)を終了する唯一の方法は、スクリプトを取得して(installZook
現在のシェルセッションに関数をインストールする)、シェルで関数を実行することです。
関数呼び出しを含むより大きなスクリプトの一部のみを表示しても、関数installZook
はスクリプトが次の場合にのみ端末を終了させます。源泉しかし、通常のシェルスクリプトとして実行するわけではありません。
exit
現在のシェルセッションを終了します。関数が実行されると、exit
関数を呼び出したシェルは終了します。
return
関数(またはソーススクリプトファイル)から返されます。代わりに関数をexit
使用すると、return
終了せずに呼び出し環境(おそらく関数を呼び出した対話型シェル)に制御権が返されます。
シェルで関数を手動で実行する場合installZook
は、exit
に変更しますreturn
。スクリプトに関数を呼び出す(表示しない)他のコードがある場合、そのコードは次のようにする必要があります。また関数の戻り状態に応答します。
例えば
installZook || return
これがスクリプトの関数のない部分でスクリプトを取得した場合、関数がゼロ以外の終了コードを返すと、制御はシェルに返されます。