pra*_*upd 17 bash shell-script function exit
我有一个 bash 脚本,如下所示,它安装了 zookeeper,但前提是尚未安装。
##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
}
Run Code Online (Sandbox Code Playgroud)
在标记为 的行<<<< here,如果已经安装了 zookeeper,我想要的是退出它下面的脚本。但是 usingexit退出终端本身。
小智 27
使用akareturn代替exitAND 运行您的脚本source your-script.sh。. your-script.sh
如果启动一个包含exit语句的脚本,您必须将它作为当前子项的子项启动。
如果您在终端会话中启动的当前 shell 中启动它(使用. ./<scriptname>anyexit将关闭主 shell,那个是在您的终端会话中启动的。
如果您启动了类似bash ./<scriptname>(或任何其他 shell 而不是bash)的脚本,那么exit将会停止您的子 shell 而不是您的终端使用的那个。
如果您的脚本具有可执行权限,则直接在不提供 shell 名称的情况下执行它也会在子 shell 中执行它。
使用return而不是exit将允许您在. ./<script name>不关闭当前外壳的情况下仍然使用启动脚本。但是您需要使用return退出仅函数或源脚本(使用. ./<scriptname>语法运行的脚本)。
| 归档时间: |
|
| 查看次数: |
49434 次 |
| 最近记录: |