写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

 

posted @ 2019-03-01 16:53  999.感冒灵  阅读(580)  评论(0编辑  收藏  举报