写shell工具类,一个常用实例

简述:

当我们常用到某些指令时,我们就需要将这个命令进行封装。封装的设计和扩展,因人而异。但为了每个人都能够了解到这个命令,常需要写出这个类的help。

关键字:

函数、getopts

函数

通过自定义函数(可参阅:http://www.runoob.com/linux/linux-shell-func.html),能够实现过程操作、输入捕获(read)、输出获取(return)。

getopts

为了获取用户在命令下的参数,通过该命令来操作(可参阅:https://blog.csdn.net/xluren/article/details/17489667)。

用法:getopts option_string variable ,第一个参数option_string :命令参数的集合;第二个参数variable:输入的参数

对于参数集合,选项之间可以通过冒号“:”进行分隔,也可以直接相连接。如果参数前有“:”则表示选项后面必须带有值(可通过OPTARG获取),如果没有可以不加实际值进行传递

cat

cat << EOF  *** EOF  能够将***打印出来

实例:

 1 #!/bin/bash
 2
 3 usage() {
 4 cat <<EOF
 5 usage: $0 options
 6
 7 OPTIONS:
 8   -d 项目
 9   -v 版本
10   -p 端口
11 EOF
12 }
13
14 while getopts "hd:v:p:" OPTION
15 do
16   case $OPTION in
17     h) usage; exit 1 ;;
18     d) project=$OPTARG  ;;
19     v) version=$OPTARG  ;;
20     p) port=$OPTARG  ;;
21     ?) usage; exit 1
22   esac
23 done
24
25 if [[ -z ${project} || -z ${version} || -z ${version} ]]; then
26     echo "必须指定项目,版本,端口"
27     exit 1
28 fi
29
30 cd `dirname $0`
31
32 cd ../${project}
33
34 mkdir -p logs
35 if [[ -f logs/${project}.log ]]; then
36     pid=`lsof logs/${project}.log |tail -1 |awk ‘{print $2}‘`
37     if [[ -n "$pid" ]]; then
38         echo "杀掉当前进程: $pid"
39         kill $pid
40     fi
41 else
42     echo "找不到logs/${project}.log"
43 fi

原文地址:https://www.cnblogs.com/SunHuaJ/p/10442169.html

时间: 2024-10-08 14:20:56

写shell工具类,一个常用实例的相关文章

java中IO写文件工具类

下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的. /** * 获取路径文件夹下的所有文件 * @param path * @return */ public static File[] ge

hadoop的dfs工具类一个

开始没搞定插件问题,就弄了个dsf操作类,后面搞定了插件问题,这玩意也就聊胜于无了,还是丢这里算了. 首先是一个配置,ztool.hadoop.properties hadoop.home.dir=G:/hadoop/hadoop-2.4.1 hadoop.user.name=hadoop hadoop.server.ip=192.168.117.128 hadoop.server.hdfs.port=9000 前面两个属性后面代码会有说明的. 属性文件的读取,方法多了,一般用commons-c

自写Date工具类

以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类.因此整理出经常使用的一些转换,用作记录,以便以后使用. 此工具类主要用于获取时间戳以及各种时间类型之间的转换. 1 package com.test; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calen

【Android 工具类】常用工具类(方法)大全

收集常用的工具类或者方法: 1.获取手机分辨率 /** * 获取手机分辨率 */ public static String getDisplayMetrix(Context context) { if (Constant.Screen.SCREEN_WIDTH == 0 || Constant.Screen.SCREEN_HEIGHT == 0) { if (context != null) { int width = 0; int height = 0; SharedPreferences D

使用Jsoup.jar写的工具类(java提取Html中的文本)

package cn.anzhuoyue.jfinalBlog.util; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.safety.Whitelist; import com.jfinal.kit.StringKit; public class HtmlUtil { // 只有纯文本可以通过 public static Stri

自己用反射写的一个request.getParameter工具类

适用范围:当我们在jsp页面需要接收很多值的时候,如果用request.getParameter(属性名)一个一个写的话那就太麻烦了,于是我想是 否能用反射写个工具类来简化这样的代码,经过1个小时的代码修改调试,终于雏形出来了,很高兴调试成功,呵呵,代码贴出来. package com.letv.uts2.utcServer.util; import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.lang.reflect

Android开发常用工具类

来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括  HttpUtils.DownloadManagerPro.Safe.ijiami.ShellUtils.PackageUtils. PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils. ParcelUtils.Rand

Android常用的工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

Android常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S