Linux 脚本分析

89 阅读1分钟

Java 部署的时候可能依赖众多,一个Java -jar xxx.jar 还不行

所以程序员一般会写一个shell可执行文件给安装部署人员

比如run.sh 或者直接就是run stop restart

直接执行

./run   
或者  ./run.sh

或者

sh ./run
或者
sh ./run.sh

都是等效的,因为Linu下都是文件,所以取得名字只是为了方便人员区分哒

那么文件内容是啥呢?

#!/bin/sh     

MAINCLASS=xxx.Start

#!/bin/sh 是表示linux下执行,是一个sh文件,MAINCLASS就是一个变量,一般默认变量大写

if [ ! -n "$JAVA_HOME" ] ;then
    echo "["`date "+%F %T"`"] 没有设置环境变量JAVA_HOME请设置后,在执行。" >> /var/log/xxx/xxx.log;
    exit;
fi

关于if then fi格式如下:

if  condition

then

    command1
else
    command2

fi

每个if都是fi结束才是完整的,then表示真的话要执行的,else就是假的话执行,fi结束

 ! 一般在shell脚本中表示取反
 
 [] 这个叫条件表达式 简易版的if
 
 -n 用于bai判断变量是否为空,注意只要有一个符号就不为空,空格也不行
 
 -d directory意思 用于判断目录是否存在
 
 echo "hello"打印出hello在控制台
  exit;结束脚本
 

常见的样式:

PID=`ps -ef|grep java|grep -v grep|grep xxx|awk '{print $2}'`
    if [ -n "$PID" ]; then
        kill -9 $PID
    fi
    exit;

awk '{print $2}' 选择第二个参数,默认是空格分隔

ps -ef|grep xxx|grep -v grep|grep java|awk '{print $2}'|xargs kill -9

同样的 xargs是把前面的值作为参数传给后面的指令