在Linux shell脚本中有条件地执行命令

时间:2016-12-02 13:59:10

标签: linux bash ubuntu

我使用Cordova CLI在我的Ubuntu 16.04 VPS服务器上创建Android APK。构建APK后,我将其复制到本地计算机上的Dropbox,然后在我的Android测试设备上安装APK。我想使用Dropbox API直接上传APK,以避免不必要的3路转移:

Server -> Local Machine -> Dropbox -> Android test device.

操作顺序就像这样

  • 服务器上的Shell脚本(已编写)清理Android源并重建APK
  • 这是通过Phonegap / Cordova详细输出完成的,确保成功构建在最后发出以下文本

建立成功

 Total time: 5.495 secs
 Built the following apk(s): 
 /path/to/app/source/platforms/android/build/outputs/apk/android-debug.apk


No scripts found for hook "after_compile".


No scripts found for hook "after_build".


[36m[phonegap][39m completed 'cordova build android -d --no-telemetry'

最后一步 - 只要在Cordova / Phonegap调试输出中找到BUILD SUCCESSFUL,就应该将android apk上传到我的Dropbox。我已经掌握了一切,但我不确定如何检查BUILD SUCCESSFUL

这是shell脚本中的伪代码

!# /bin/bash
pgclean;
# pgclean is another shell script that cleans up the Phonegap project in the 
# current folder
pgbuild;
# this rebuilds the APK and saves the detailed debug output to
# /path/to/my/project/debug.txt
# it is debug.txt which would contain BUILD SUCCESSFUL etc

这是我对bash脚本的了解到达缓冲区的地方。我接下来想做什么:

  • 测试上面的debug.txt,以确保构建成功
  • 如果是,请调用我的最终shell脚本

    moveapktodropbox $ 1

其中$ 1是我传递给当前shell脚本的参数,用于提供APK应存储在Dropbox中的名称。

2 个答案:

答案 0 :(得分:3)

使用POSIX,每个程序都应退出状态代码: 0 表示成功 1 警告,< strong> 2 以及更多错误

您可以测试进程构建是否以状态代码0退出。

buildprocess
if [ $? -eq 0 ] ; then otherscript ; fi

$?表示上次状态代码

或更简洁:

buildprocess && otherscript

答案 1 :(得分:0)

我最终还是这样做了

x=$(grep -c "BUILD SUCCESSFUL" /path/to/my/app/debug.txt);
if [ $x -eq 1 ]; then
 moveit $1;
 echo "Good Build";
 exit;
fi;