写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 能够将***打印出来
实例:
#!/bin/bash usage() {
cat <<EOF
usage: $ options OPTIONS:
-d 项目
-v 版本
-p 端口
EOF
} while getopts "hd:v:p:" OPTION
do
case $OPTION in
h) usage; exit ;;
d) project=$OPTARG ;;
v) version=$OPTARG ;;
p) port=$OPTARG ;;
?) usage; exit
esac
done if [[ -z ${project} || -z ${version} || -z ${version} ]]; then
echo "必须指定项目,版本,端口"
exit
fi cd `dirname $` cd ../${project} mkdir -p logs
if [[ -f logs/${project}.log ]]; then
pid=`lsof logs/${project}.log |tail - |awk '{print $2}'`
if [[ -n "$pid" ]]; then
echo "杀掉当前进程: $pid"
kill $pid
fi
else
echo "找不到logs/${project}.log"
fi
写shell工具类,一个常用实例的更多相关文章
- 30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验?
30行自己写并发工具类(Semaphore, CyclicBarrier, CountDownLatch)是什么体验? 前言 在本篇文章当中首先给大家介绍三个工具Semaphore, CyclicBa ...
- hadoop的dfs工具类一个【原创】
开始没搞定插件问题,就弄了个dsf操作类,后面搞定了插件问题,这玩意也就聊胜于无了,还是丢这里算了. 首先是一个配置,ztool.hadoop.properties hadoop.home.dir=G ...
- 自写Date工具类
以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类.因此整理出经常使用的一些转换,用作记录,以便以后 ...
- Qt信号与槽 如何写2个类,一个发送信号,一个接收并处理
题目: 假设要做2个类,一个类的值提供一个函数SetValue,当这个值发生变化时,假设>10就触发告警调用B的函数; ------------------------------------- ...
- java中IO写文件工具类
以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足 ...
- 含有多个main方法的jar包的运行方式(适用于用java写的工具类)
如果一个jar中含有多个主程序,而你没有配置默认主程序,或者想要运行指定主程序,则可以通过如下命令执行: Java -cp example03-1.0-SNAPSHOT.jar cn.vicky.ex ...
- C#写日志工具类
代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System ...
- [JAVA][StringUtils]字符串工具类的常用方
StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 ...
- less循环写css工具类
//margin-right=================.mr(100); .mr(@n, @i: 1) when (@i =< @n) { .mr-@{i} { margin-right ...
随机推荐
- python爬虫04 | 长江后浪推前浪,Reuqests库把urllib库拍在沙滩上
最近 有些朋友 看完小帅b的文章之后 把小帅b的表情包都偷了 还在我的微信 疯狂发表情包嘚瑟 我就呵呵了 只能说一句 盘他 还有一些朋友 看完文章不点好看 还来催更 小帅b也只能说一句 继续盘他 ...
- Golang - 异常处理
目录 Golang - 异常处理 1. 抛异常和处理异常 2. 返回异常 Golang - 异常处理 1. 抛异常和处理异常 package main import "fmt" / ...
- 自学python 第三天
#!/usr/bin/env python# -*- coding:utf-8 -*- # name = "***"# if "*" in name:# pri ...
- 教你 Shiro + SpringBoot 整合 JWT
本篇文章将教大家在 shiro + springBoot 的基础上整合 JWT (JSON Web Token) 如果对 shiro 如何整合 springBoot 还不了解的可以先去看我的上一篇文章 ...
- caffe中ConvolutionLayer的前向和反向传播解析及源码阅读
一.前向传播 在caffe中,卷积层做卷积的过程被转化成了由卷积核的参数组成的权重矩阵weights(简记为W)和feature map中的元素组成的输入矩阵(简记为Cin)的矩阵乘积W * Cin. ...
- POJ 2375
BFS+强连通.输出max(缩点后出度为0的点数,缩点后入度为0的点数). #include <cstdio> #include <iostream> #include < ...
- 你真懂JavaScript吗?
正文 题目1: if (!("a" in window)) { var a = 1; } alert(a); 题目2 var a = 1, b = function a(x) { ...
- AOJ 0121 Seven Puzzle {广度优先搜索}(*)
原题 题意 题意是有一个输入,比方: 1 0 2 3 4 5 6 7 摆成例如以下形状: 1 0 2 3 4 5 6 7 0表示空格.其它数字能够移动到0的位置.最后须要到例如以下形状: 0 1 2 ...
- Linux Terminal fortune
Linux下,我们能够使用apt-get安装fortune,这是一个比較有趣的功能 在输入fortune之后,Terminal会输出一句名言.诗句,或一些有趣的话: 默认情况下.fortune仅仅会显 ...
- 18110 Koishi's travel, Satori's travel
18110 Koishi's travel, Satori's travel 该题有题解 时间限制:4000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: 不限定 ...