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
이것이 스크립트의 함수 없는 부분이고 스크립트를 얻은 경우, 함수가 0이 아닌 종료 코드를 반환하면 제어가 셸로 반환됩니다.