端末以外のbash機能の終了

端末以外のbash機能の終了

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>

おすすめ記事