zoukankan      html  css  js  c++  java
  • 一个shell脚本引发的对于分号(;)和$#的使用说明(转载) 皇星客栈

    背景

    由于在工作中需要一次性关闭linuxopt目录下安装的多个tomcat,因此有了写一个脚本统一关闭开启这个目录下所有tomcat的想法

    前提

    Tomcat安装目录结构:  /opt/tomcat/tomcat_8080;/opt/tomcat/tomcat_9080……

    思路

    循环调用tomcat自身bin目录下的startup.shshutdown.sh开启或是关闭tomcat服务

    脚本 TomCtrol.sh

    #! /bin/sh

    #定义批量处理端口
    p=(4080 7080)

    #开启或关闭tomcat服务器
    startOrCloseTomcat(){
             if [ $1 = -s ] ;  then           #
    执行开启命令
                       foreachStartup
             elif [ $1 = -c ]                   #
    执行关闭命令
                  then
                       foreachShutdown
             else
                       echo "
    参数不正确!请重新输入!"
                       exit #
    退出该函数
             fi           
    }

    #循环开启tomcat
    foreachStartup(){
       for port in ${p[@]}
           do
                 s_res=`/opt/tomcat/*tomcat*$port/bin/startup.sh`
                 echo "$port-tomcat
    已经开启!"
       done
    }

    #循环关闭tomcat
    foreachShutdown(){
       for port in ${p[@]}
           do
               s_res=`/opt/tomcat/*tomcat*$port/bin/shutdown.sh`
               echo "$port-tomcat
    已经关闭!"
       done
    }

    if [ $# -eq 0 ]
       then
             echo "
    请输入执行参数"
             echo " -s 
    启动所有/opt/tomcat/下的tomcat"
             echo " -c 
    关闭所有/opt/tomcat/下的tomcat"
       else
             #echo "start repari .."
             startOrCloseTomcat $1
    fi    

    关于shell脚本中分号(;)——命令分割符 的使用说明

    首先先看几种写法,这里用if语句作为例子。

    第一种

    test(){
         if [ 1 -eq 1 ]; then
              echo "1=1"
         else
              echo "1!=1"
         fi
    }

    第二种

    test1(){
         if [ 1 -eq 1 ]
           then  echo "1=1"
           else  echo "1!=1"
         fi
    }

    第三种

    test2(){ if [ 1 -eq 1 ] ; then echo "1=1" ; else echo "1!=1" ; fi }

           由此可见分号是用来隔断每个语法关键字或命令的 。对于字符的比较及其他shell语法关键字之间分号的使用方式相同。需要知道的是在不同的语法命令之间要用分号隔开或是换行方能执行,否则将会在调用脚本的时候报错。

    补充

    if语句后的表达式比较变量要与比较操作符用空格分开。if [ 1 -eq 1 ]不能写成if[ 1 -eq 1 ] if [1 -eq 1 ]if [ 1 -eq 1]if [ 1-eq1 ]
    shell
    中用arrary=(arr1 arr2 arr3 ……) 的方式声明数组
    访问数组时使用${arrary[@]}访问整个数组 ,使用${p[index]}访问数组中的某个特定的值
    变量赋值时变量名跟等号之间不能有空格
    $# ——
    传给shell程序的位置参数个数;$0 ——脚本名称;$? ——最后命令的完成码或在shell程序内所执行的shell程序;$n (n>0)——获取传递的第n个参数
    cd /opt/tomcat/tomcat*0     *
    号代表匹配0..n个字符;cd /opt/tomcat/to?cat   ? 号代表匹配1个字符

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/oxcow/archive/2009/11/24/4865063.aspx

  • 相关阅读:
    IBatis.Net使用总结(三)-- IBatis实现分页返回数据和总数
    IBatis.Net使用总结(二)-- IBatis返回DataTable/DataSet(网上例子的集合)
    IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)
    ibatis.net 中SqlMaps的xml文件的例子
    ibatis.net MVC 单元测试 错误解决方法
    TreeView checkbox 全选
    Win下Eclipse提交Hadoop程序出错:org.apache.hadoop.security.AccessControlException: Permission denied: user=D
    端口被占用怎么办?如何查看win7电脑端口是否被占用
    Python 3.7运行别人的Python 3.8项目,报Cannot run program "D:pythonpython.exe"解决办法
    Python学习系列之常见错误TypeError,try...except...finally等异常处理机制(二十二)
  • 原文地址:https://www.cnblogs.com/huangxingkezhan/p/2875681.html
Copyright © 2011-2022 走看看