第一个shell脚本编写

#!/bin/bash

# 上面中的 #! 是一种约定标记, 它可以告诉系统这个脚本需要什么样的解释器来执行;

#定义变量:

APP_BASE_PATH="/opt/app"

#特殊变量:

$1 传递给脚本或者函数的第1个参数   $2 依次类推

NODE_NAME="$1"

OP="$2"

WARNAME="$3"

WARFILE="$4"

#使用变量

只需要在一个定义过的变量前面加上美元符号 $ 就可以了, 另外,对于变量的{} 是可以选择的, 它的目的为帮助解释器识别变量的边界.

SERVER_NAME="apache-tomcat-$NODE_NAME"

SERVER_DIR="$APP_BASE_PATH/$SERVER_NAME"

#将命令输出的值赋值给一个变量

directory=`pwd`       #用反引号将命令引起来
echo $directory tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'` if语句 if[表达式] then 语句 fi if[表达式] then 语句 else 语句 fi 条件判断
if [ -z STRING ]  “STRING” 的长度为零则为真。  

if [ -z ${WARNAME} ]; then
          echo "please specify war name!"
          echo "Usage: ./tom.sh NODE_NAME -w WARNAME /path/to/file.war"
          exit 0
    fi

if [ ! -s ${WARFILE} ]   如果文件存在且大小不为0
    then  
        echo "file not exist: [${WARFILE}]"
        exit 0
    fi

shell函数

shell函数必须先定义再使用

start() {
echo -n $"Starting $SERVER_NAME: "
tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`
if [ ${tId:=0} -ne 0 ]
then
echo "failure: it's already startup,please stop first.[Failed]"
else
${SERVER_DIR}/bin/startup.sh
sleep 2
tId=`ps -ef|grep "${SERVER_DIR}/bin/bootstrap.jar"|grep -v "grep"|awk '{print $2}'`
if [ ${tId:=0 } -eq 0 ]
then
echo "failure: See details on ${SERVER_DIR}/logs/catalina.out. [Failed]"
else
echo "success [OK]"
fi
fi
}

注意:1. 调用函数只需要给出函数名,不需要加括号。
basename 命令用于创建基本文件名称
 targetWar=`basename ${WARFILE}`

if [ "${targetWar%%.war*}" != "${WARNAME}" ]; then
         echo "ERROR: Target file name must equles '${WARNAME}.war.*'"
         echo " Please change file name and retry."
         exit 0
        else
        echo "war file path: ${WARFILE}"
    fi

${targetWar%%.war*}  把targetWar变量的值删掉匹配.war*的后缀的值

Linux 脚本编写的更多相关文章

  1. Linux 脚本编写基础

    txt去重    http://man.linuxde.net/sort Linux 脚本编写基础 http://www.cnblogs.com/linn/archive/2007/03/05/664 ...

  2. linux 脚本编写基础(一)

    1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...

  3. shell脚本编写笔记

    包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...

  4. Linux脚本入门(1)

    1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例 ...

  5. shell 脚本编写基础

    在进行Linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行 ...

  6. 在ubuntu linux 中编写一个自己的python脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pmpy为例(play music python),为了区别之前说的bash脚本添加了py后缀),来 ...

  7. 在ubuntu linux 中编写一个自己的bash脚本

    在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pm为例(play music)),来实现音乐的播放.注:本人ununut中安装了audacious ...

  8. Linux shell编写脚本部署pxe网络装机

    Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...

  9. Linux 用脚本编写搭建yum本地仓库

    Linux 用脚本编写搭建yum本地仓库 源码如下: #!/bin/bash #该脚本用于自动化搭建本地yum仓库 #挂载光盘 #作者:雨中落叶 #博客:https://www.cnblogs.com ...

随机推荐

  1. 20165207 预备作业3 Linux安装及学习

    Linux安装及学习 假期我没有把我的电脑带回家,受到家里的台式机内存和网吧的一些条件的限制我只在台式机安装了32位系统然后学习了实验楼的Vim课程以及Linux的前八课. 问题与解决 安装过程 我家 ...

  2. Mysql在InnoDB引擎下索引失效行级锁变表锁案例

    先做好准备,创建InnoDB引擎数据表,并添加了相应的索引 DROP TABLE IF EXISTS `innodb_lock`; CREATE TABLE `innodb_lock` ( `a` ) ...

  3. iptables命令、规则、参数详解

    表    (table)包含4个表:4个表的优先级由高到低:raw-->mangle-->nat-->filterraw---RAW表只使用在PREROUTING链和OUTPUT链上 ...

  4. Gym 101246J Buoys(三分查找)

    http://codeforces.com/gym/101246/problem/J 题意: 给定x轴上的n个点的坐标,按顺序从左到右给出,现在要使得每个点的间距相同,可以移动每个点的坐标,但是不能改 ...

  5. POJ 2407 Relatives(欧拉函数)

    http://poj.org/problem?id=2407 题意: 给出一个n,求小于等于的n的数中与n互质的数有几个. 思路: 欧拉函数的作用就是用来求这个的. #include<iostr ...

  6. 使用CAS实现无锁的SkipList

    无锁 并发环境下最常用的同步手段是互斥锁和读写锁,例如pthread_mutex和pthread_readwrite_lock,常用的范式为: void ConcurrencyOperation() ...

  7. php while循环

    <html> <body> <?php $i=; ) { echo "The number is " . $i . "<br>& ...

  8. m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置

    m_Orchestrate learning system---二十九.什么情况下用数据库做配置字段,什么情况下用配置文件做配置 一.总结 一句话总结: 配置文件 开发人员 重置 数据库 非开发人员 ...

  9. hihocoder1513

    https://hihocoder.com/problemset/problem/1513 五维偏序问题,直接bitset压位,复杂度O(n^2/32) (本来想写三维偏序,但是cdq不会只好写写五维 ...

  10. bzoj1084: [SCOI2005]最大子矩阵 dp

    这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 题解:m很小分类讨论,m==1时怎么搞都可以,m==2时,dp[i][j][k]表 ...