【Linux学习】Shell脚本如何执行完毕之后不自动关闭窗口?

一、问题描述

在执行 ByteX 项目的上传脚本 publish.sh的时候,出现错误了,但是错误一闪而过,完全无法分析问题是啥。

所以,我的需求是,执行完shell脚本之后,不管成功还是失败,你别主动关闭掉窗口,关不关窗口我自己来决定。

二、实现方式一

2.1 原来的内容

原来的publish.sh 内容为:

#!/usr/bin/env bash

##############################################################################
##
##  Upload gradle_plugins to TT Nexus (https://wiki.bytedance.net/pages/viewpage.action?pageId=173661094)
##  http://git.bytedance.com:8081/#browse/browse/components:ugc_android    (search key : com.bytedance.android.byteX)
##  run ./publish.sh -m to upload to maven.
##  run ./publish.sh -m -t to upload to maven(snapshot -t=-test).
##  run ./publish.sh to upload to gradle_plugins directory.
##  run ./publish.sh -b to upload to bintray jcenter.
##############################################################################
upload2Maven=false
useSnapshot=false
upload2JCenter=false


while getopts "mtb" opt
do
  case ${opt} in
    m)
      upload2Maven=true
      ;;
    b)
      upload2Maven=true
      upload2JCenter=true
      ;;
    t)
      useSnapshot=true
      ;;
  esac
done
echo ${upload2Maven}
echo ${upload2JCenter}
echo ${useSnapshot}
echo "upload2Maven=$upload2Maven" > upload.properties
echo "useSnapshotMaven=$useSnapshot" >> upload.properties
echo "excludeApp=true" >> upload.properties


#./gradlew clean

if [[ "$upload2JCenter" == "true" ]]; then
    echo "upload2JCenter=$upload2JCenter" >> upload.properties
    ./gradlew bintrayUpload --stacktrace

else
    ./gradlew uploadArchives
fi

rm -rf ./upload.properties

2.2 增加一个sleep 10000来防止窗口自动关闭

然后 我在这个文件的结尾,增加一个sleep 10000,如下所示

在这里插入图片描述

完整代码如下所示:

#!/usr/bin/env bash

##############################################################################
##
##  Upload gradle_plugins to TT Nexus (https://wiki.bytedance.net/pages/viewpage.action?pageId=173661094)
##  http://git.bytedance.com:8081/#browse/browse/components:ugc_android    (search key : com.bytedance.android.byteX)
##  run ./publish.sh -m to upload to maven.
##  run ./publish.sh -m -t to upload to maven(snapshot -t=-test).
##  run ./publish.sh to upload to gradle_plugins directory.
##  run ./publish.sh -b to upload to bintray jcenter.
##############################################################################
upload2Maven=false
useSnapshot=false
upload2JCenter=false


while getopts "mtb" opt
do
  case ${opt} in
    m)
      upload2Maven=true
      ;;
    b)
      upload2Maven=true
      upload2JCenter=true
      ;;
    t)
      useSnapshot=true
      ;;
  esac
done
echo ${upload2Maven}
echo ${upload2JCenter}
echo ${useSnapshot}
echo "upload2Maven=$upload2Maven" > upload.properties
echo "useSnapshotMaven=$useSnapshot" >> upload.properties
echo "excludeApp=true" >> upload.properties


#./gradlew clean

if [[ "$upload2JCenter" == "true" ]]; then
    echo "upload2JCenter=$upload2JCenter" >> upload.properties
    ./gradlew bintrayUpload --stacktrace

else
    ./gradlew uploadArchives
fi

rm -rf ./upload.properties

sleep 10000

2.3 运行效果

这样运行该publish.sh的时候,就不会主动关闭窗口了。

在这里插入图片描述

三、实现方式二

3.1 使用read命令达到类似bat中的pause命令效果

直接在原来的脚本末尾,加上下面一段代码,实现类似bat中的pause命令效果

#!/bin/bash
echo 按任意键继续
read -n 1
echo 继续运行

3.2 修改后的

#!/usr/bin/env bash

##############################################################################
##
##  Upload gradle_plugins to TT Nexus (https://wiki.bytedance.net/pages/viewpage.action?pageId=173661094)
##  http://git.bytedance.com:8081/#browse/browse/components:ugc_android    (search key : com.bytedance.android.byteX)
##  run ./publish.sh -m to upload to maven.
##  run ./publish.sh -m -t to upload to maven(snapshot -t=-test).
##  run ./publish.sh to upload to gradle_plugins directory.
##  run ./publish.sh -b to upload to bintray jcenter.
##############################################################################
upload2Maven=false
useSnapshot=false
upload2JCenter=false


while getopts "mtb" opt
do
  case ${opt} in
    m)
      upload2Maven=true
      ;;
    b)
      upload2Maven=true
      upload2JCenter=true
      ;;
    t)
      useSnapshot=true
      ;;
  esac
done
echo ${upload2Maven}
echo ${upload2JCenter}
echo ${useSnapshot}
echo "upload2Maven=$upload2Maven" > upload.properties
echo "useSnapshotMaven=$useSnapshot" >> upload.properties
echo "excludeApp=true" >> upload.properties


#./gradlew clean

if [[ "$upload2JCenter" == "true" ]]; then
    echo "upload2JCenter=$upload2JCenter" >> upload.properties
    ./gradlew bintrayUpload --stacktrace

else
    ./gradlew uploadArchives
fi

rm -rf ./upload.properties

#  使用read命令达到类似bat中的pause命令效果
echo 按任意键继续
read -n 1
echo 继续运行

在这里插入图片描述

3.3 运行效果

运行完毕,弹出提示 按任意键继续
在这里插入图片描述

随便点击键盘,都可以响应,然后关闭窗口

四、参考链接

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节卷动

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值