Shell脚本命令参数使用指南

墨韵云阁 0 阅读 开发笔记

命令参数

[!NOTE] 示例

  • -s|--start:启动服务,后跟端口号
  • -stop:停止服务,后跟端口号
  • -c|--copy:备份并更新项目文件
  • -l|--log:查看日志,后跟端口号
  • 示例:sh xxx.sh -s 12000 启动端口为 12000 的服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 项目名称
APP_NAME=safirst-etmf-api-1.0.0.jar

# 根据端口号启动服务
start_port() {
echo "准备启动服务,端口号:$PORT"
pid=$(netstat -an | grep $PORT | awk '{print $4}')
echo "当前进程信息:$pid"
if [[ -n $pid ]]; then
echo "端口号 $PORT 的服务已在运行"
else
echo "正在启动服务..."
nohup java -jar $APP_NAME --server.port=${PORT} --logging.file.name=/mnt/nas/etmf/irzhd-logs-api-$PORT-105/spring.log > /dev/null &
fi
exit 1
}

# 备份并更新项目文件
copy_c() {
FILE_NAME=$(date -d last-day +%Y%m%d)
echo "开始备份项目..."
cp $APP_NAME ${APP_NAME}_${FILE_NAME}
echo "备份完成:${APP_NAME}_${FILE_NAME}"
echo "正在更新项目文件..."
cp /mnt/nas/jar/$APP_NAME .
echo "项目更新成功"
exit 1
}

# 停止指定端口的服务
stop_s() {
echo "正在停止端口 $PORT 的服务..."
ps -ef | grep $PORT | grep -v grep | awk '{print $2}' | xargs kill -9
echo "服务已停止"
exit 1
}

# 查看日志
log_port() {
tail -f /mnt/nas/etmf/irzhd-logs-api-$PORT-105/spring.log
exit 1
}

# 使用说明
usage() {
echo "Usage: ${0} [-s|--start] [-stop] [-c|--copy] [-l|--log]" 1>&2
exit 1
}

# 参数解析
while [[ $# -gt 0 ]]; do
key=${1}
case ${key} in
-s|--start)
PORT=${2}
if [[ ! -n $PORT ]]; then
echo "请提供端口号,例如:-s 12000"
exit 1
else
echo "正在启动端口号:$PORT"
shift 2
start_port
fi
;;
-c|--copy)
copy_c
shift 2
;;
-stop)
PORT=${2}
if [[ ! -n $PORT ]]; then
echo "请提供端口号,例如:-stop 12000"
exit 1
else
stop_s
shift 2
fi
;;
-l|--log)
PORT=${2}
if [[ ! -n $PORT ]]; then
echo "请提供端口号,例如:-l 12000"
exit 1
else
log_port
shift 2
fi
;;
*)
usage
shift
;;
esac
done

评论