shell 接收长参数

devtools/2024/11/19 14:23:48/

以备份 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/devtools/135220.html

相关文章

海外媒体发稿与宣发:拓展全球影响力的关键-大舍传媒

海外媒体发稿与宣发:拓展全球影响力的关键 在当今全球化的商业环境中,企业和个人都渴望在国际舞台上崭露头角,吸引更广泛的关注和资源。海外媒体发稿与宣发已成为实现这一目标的关键策略。它不仅能够提升品牌知名度,还能塑造良好…

kubernetes如何配置默认存储

如果不想每次都创建PV,希望k8s集群中能够配置号默认存储,然后根据你的PVC自动创建PV,就需要安装一个默认存储,也就是storageclass 什么是storageclass Kubernetes提供了一套可以自动创建PV的机制,即:Dyna…

【网络安全】SSL(一):为什么需要 Keyless SSL?

未经许可,不得转载。 文章目录 背景正文背景 随着网站和应用程序向云端迁移,使用 HTTPS(SSL/TLS)加密流量已成为行业标准。然而,传统的 HTTPS 配置要求服务器持有网站的私钥,这在云计算环境中引发了一系列安全性和合规性问题。一旦云服务器遭到攻击,私钥泄露可能带来不…

【IC每日一题:PCIE协议简介】

IC每日一题:PCIE协议简介 1 PCIE协议1.1 PCIE总体架构1.1.1 Root Complex1.1.2 PCIe Bus1.1.3 Endpoint1.1.4 Port and Bridge1.1.5 Switch 1.2 PCIe的分层结构1.2.1 事务层1.2.2 数据链路层1.2.3 物理层1.2.4 层与层之间的交互--接收和发送1.2.5 PCIe的Demo 2 PCIE…

【AI+教育】一些记录@2024.11.16

《万字长文,探讨关于ChatGPT的五个最核心问题》 万字长文,探讨关于ChatGPT的五个最核心问题关于 ChatGPT 铺天盖地的信息让人无所适从。本文则试图提炼出五个关键问题:如何理解这次范式突破,未来能达到的技术天花板,行…

如何修复苹果手机上的绿屏 - 快速简便的解决方案

今天,我们正在解决一个困扰很多苹果手机用户的问题——苹果手机绿屏!如果你遇到过这种情况或认识遇到这种情况的人,请继续关注,因为今天我们将深入探讨如何通过几种简单的方法修复苹果手机上的绿屏。 方法 1:强制重启手…

《操作系统 - 清华大学》4 -2:非连续内存分配:分页

文章目录 1. 概述2. 页的寻址3. 帧4. 页5. 页寻址机制 1. 概述 前面把段机制做了简单介绍,段机制相对而言在现有的 CPU 硬件环境中是属于比较少的,现在绝大部分 CPU 主要采取的是分页机制。这是另外一种和分段机制不同的硬件的非连续内存的管理方式&…

Linux网络:HTTPS协议

Linux网络:HTTPS协议 加密方式对称加密非对称加密混合加密中间人攻击 证书数据签名CA认证 HTTPSSSL/TSLHTTPS 在HTTP协议中,所有的数据都采用明文的形式传输,这就会导致数据非常容易泄露,只要拿到HTTP报文,就可以窃取各…