shell 接收长参数

server/2024/11/19 7:24:32/

以备份 mysql 脚本为例,如下

#!/bin/bash
# 分隔符
str="-"# 定义分割线函数
FenGeLine() {## 获取屏幕宽度ScreenLen=$(stty size |awk '{print $2}')## 标题宽度TitleLen=$(echo -n $1 |wc -c)#echo $TitleLen## 左右分割线长度LineLen=$(((${ScreenLen} - ${TitleLen})/2))        # 一半长度,标题居中。if [ ${LineLen} -gt 0 ];then#echo $LineLen# 打印分割线yes ${str} |sed ''''${LineLen}'''q' |tr -d "\n" && echo -n $1 && yes ${str} |sed ''''${LineLen}'''q' |tr -d "\n" && echoelseecho "$1"fi}# 定义短选项和长选项
SHORT_OPTS="h"
LONG_OPTS="help,host:,user:,port:,password:,db:,backfile:,"# 解析命令行选项
PARSED_OPTS=$(getopt -o $SHORT_OPTS -l $LONG_OPTS -- "$@")
if [[ $? -ne 0 ]]; thenexit 1
fi# 将解析结果设置为位置参数
eval set -- "$PARSED_OPTS"# 处理选项
while true; docase "$1" in-h|--help)echo "Usage: $0 [options]"echo "  -h, --help      Show help"echo "  --host connect mysql ip address"echo "  --user connect mysql user"echo "  --port connect mysql port"echo "  --password connect mysql password"echo "  --db backup mysql database"echo "  --backfile backup file"shiftexit 0;;--host)host="$2"shift 2;;--user)user="$2"shift 2;;--port)port="$2"shift 2;;--password)password="$2"shift 2;;--db)db="$2"shift 2;;--backfile)backfile="$2"shift 2;;--)shiftbreak;;*)echo "Invalid option: $1"exit 1;;esac
done
host=${host:-localhost}
user=${user:-root}
port=${port:-3306}
password=${password:-123456}
backfile=${backfile:-/opt/mysql-${db}.sql}FenGeLine "host 默认值为 localhost"
FenGeLine "user 默认值为 root"FenGeLine "port 默认值为 3306"
FenGeLine "password 默认值为 123456"
FenGeLine "backfile 默认值为 /opt/mysql${db}.sql}"FenGeLine "传入的 host 为 $host"
FenGeLine "传入的 user 为 $user"
FenGeLine "传入的 port 为 $port"
FenGeLine "传入的 password 为 $password"
FenGeLine "传入的 db 为 $db"
FenGeLine "传入的 backfile 为 $backfile"if [ -z "$db" ];then
mysqldump  -h$host -u$user -P$port -p$password -A > $backfile
else
mysqldump  -h$host -u$user -P$port -p$password -B $db > $backfile
fi

http://www.ppmy.cn/server/143112.html

相关文章

Qt桌面应用开发 第四天(对话框 界面布局)

目录 1.对话框 1.1模拟对话框 1.2非模拟对话框 1.3消息对话框 1.3.1询问对话框 1.3.2严重错误对话框 1.3.3信息提示对话框 1.3.4警告对话框 1.4其他对话框 1.4.1颜色对话框 1.4.2文件对话框 1.4.3字体对话框 1.5界面布局 1.对话框 1.1模拟对话框 会阻塞同一应用…

安全、便捷、效率高,明达边缘计算网关助力制药装备企业远程调机

随着药厂对设备运维需求的增长,制药装备企业需要在提高运维效率的同时,降低人工及差旅成本。制药装备因其数据具有高度的保密性,要求运维工程师提供安全可靠的远程调试方式。本案例介绍了明达技术MBox20系列5口WIFI通用网关在制药装备上的应用…

【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从div,dd,dup到结构化数据的访问

文章目录 前言1. div指令1.1 使用div时的注意事项1.2 使用格式1.3 多种内存单元表示方法进行举例1.4 问题一1.5 问题一的分析与求解1.5.1 分析1.5.2 程序实现 1.6 问题二1.7 问题二的分析与求解1.7.1 分析1.7.2 程序实现 2. 伪指令 dd2.1 什么是dd?2.2 问题三2.3 问…

【头歌实训:循环调度法】

头歌实训:循环调度法 文章目录 任务描述相关知识1. 如何设计一个队列2. C STL的队列容器queue2.1 queue的定义2.2 queue容器内元素的访问输出结果:2.3 queue常用函数实例解析2.4 queue的注意事项2.5 一个完整的队列程序示例 编程要求输入:输出:限制:输入…

原生微信小程序做视频和图片上传wx.chooseMedia({})

原来的旧的方法已经被遗弃&#xff0c;现在最新上传视频和图片的方法用的是wx.chooseMedia({})&#xff0c;共同用这个方法&#xff0c;参数不一样&#xff1b; code&#xff1a; wxml&#xff1a; <!-- 上传图片 --> <view class"upload-box" bindtap&quo…

Java项目实战II基于Java+Spring Boot+MySQL的共享汽车管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在共享经济…

数据分析-50-时间序列信息编码之采用正余弦循环编码

文章目录 1 基本概念1.1 虚拟变量的缺点1.2 循环编码原理2 模拟数据2.1 日期序列2.2 目标序列3 编码循环变量3.1 按月划分周期3.2 按天划分周期3.3 正余弦散点图4 拟合模型4.1 构建数据集(每月编码)4.2 构建数据集(每日编码)5 参考附录1 基本概念 1.1 虚拟变量的缺点 因为时间…

c# npoi操作excel

今天在弄使用npoi对excel表的操作&#xff0c;遇到个问题就是使用workbook通过filestream打开后&#xff0c;让后workbook.write(filestream)居然报文件流关闭了&#xff0c;无法写入&#xff0c;弄了好久都不行&#xff0c;最后通过写2个excel文件来解决&#xff0c;现在看来我…