adb reboot自动化测试脚本_JAVA


做为一个运维,经常需要写一些 shell 脚本去完成一些重复的任务。有的会很长,有的很短。

不知道大家有没有看过一些软件自带的 shell 脚本,比如 harbor 的 install.sh,https://github.com/goharbor/harbor/blob/master/make/install.sh,里面添加了大量的功能和逻辑,以确保能正确的安装,同时不会损坏你的系统。

举个例子,要在你服务器上安装个 JDK 1.8,但你不知道这台机器已经装了个JDK 1.7,等你安装后配置了环境变量,java -version,输出就变成了 1.8了,如果你加了个判断逻辑,判断这台机器如果已经装了 jdk,我就停止并退出脚本。

工作几年来,我收集了各种技术来增强我的 Bash 脚本,我想分享其中一些,希望它们能帮助其他人。

开始

我刚开始写脚本的时候,只是一些命令的集合。举个例子:

cp january_schedule.tar.gz /usr/apache/home/calendar/cd /usr/apache/home/calendar/tar zvxf january_schedule.tar.gz

虽然这样节省了我的时间,但是长远来看,这并不是一个可维护,可移植的脚本。随着时间的推移,我逐渐学会了如果使用 shell 脚本完成一些更复杂的任务。

条件语句

与许多其他编程语言一样,条件一直是一个强大而通用的功能。条件是使逻辑能够由计算机程序执行的。我的示例大部分基于条件逻辑。

基本条件使用"if"语句。这允许我们测试某些条件,然后我们可以使用这些条件来操作脚本的执行方式。例如,我们可以检查是否存在 Java bin 目录,该目录表示已安装 Java。 如果找到,可执行路径可以使用该位置,以启用Java应用程序的调用。

if [ -d "$JAVA_HOME/bin" ] ; then    PATH="$JAVA_HOME/bin:$PATH"

限制执行

有时候希望脚本以指定用户去运行,尽管 Linux 具有用户和组的权限权限,以及用于启用此类保护的 SELinux,但也可以把逻辑放在脚本中。比如希望用 Nginx 用户运行 Nginx,Linux 有几个环境变量,我们可以在此逻辑中测试。一个是 $USER,它提供用户名。另一个是 $UID,它提供用户的标识号(UID),在脚本的情况下,提供执行用户的UID。

用户

下面演示如何将脚本限制为用户 nginx。条件"if"语句会问,"执行用户是 nginx 吗?当发现条件为 true 时,将调用第一个 echo 语句,然后是exit 1,该语句将终止脚本并退出。

if [ "$USER" != 'nginx' ]; then     echo "Sorry, this script must be run as nginx!"     exit 1fiecho "continue script"

ROOT

下面演示此脚本确保只有 root 用户才能执行它。 因为 root 的 UID 为 0,所以我们可以在条件 if 语句中使用 -gt 选项,以禁止所有大于零的 UID。

if [ "$UID" -gt 0 ]; then     echo "Sorry, this script must be run as ROOT!"     exit 1fiecho "continue script"

使用参数

Bash 脚本可以将参数作为输入。 以下是一些例子。 但是首先,应该了解好的编程意味着我们不只是编写可以完成我们想要的; 我们必须编写无法完成我们不想要的。 我想确保在没有参数的情况下脚本不会造成任何破坏性的影响。 因此,这是第一个检查。 该条件检查参数 $# 的值是否为零,如果为true,则终止脚本。

if [ $# -eq 0 ]; then    echo "No arguments provided"    exit 1fiecho "arguments found: $#"

多个参数

可以将多个参数传递给脚本。 脚本用来引用每个参数的内部变量只是简单地增加,例如 $1,$2,$3 等。 我将在上面的示例中使用以下行将其扩展,以回显前三个参数。 为了演示,此例子很简单。

echo $1 $2 $3

用户输入

在脚本中使用的另一个有用功能是它在执行过程中接受输入的能力。最简单的方法是向用户提供一些输入。

echo "enter a word please:" read word echo $word

也可以向用户提供选择。

read -p "Install Software ?? [Y/n]: " answ if [ "$answ" == 'n' ]; then   exit 1 fi   echo "Installation starting..."

失败时退出

以前写了个脚本去部署最新版的 JDK,将 JDK 的压缩包解压到指定目录,建立软链接,如果解压失败,可能会破坏整个系统的 JAVA,我希望在这种情况下脚本会退出。以下是部分脚本:

tar zxvf jdk-8u221-linux-x64.tar.gz -C /jdk --checkpoint=.500; ec=$?if [ $ec -ne 0 ]; then     echo "Installation failed - exiting."     exit 1fi