getopt 实现shell脚本输入参数

#!/bin/bash

options() {
   
   
    cat <<EOF
Usage: $1 [PARAMs]
-h|--help   :                                 help

-w :                                          查看 ***日志
-i :                                          查看 ***日志

-s|--savelog (save log ) :                    保存web和 ***日志到指定的目录

--web :                                       进入 ***容器

--ins :                                       进入 ***容器

EOF
}

info_msg() {
   
   
    echo  -e "\033[32m [INFO] - $1 \033[0m"
}

error_msg()
Shell 脚本中使用 `getopt` 可以帮助处理命令行参数,支持短选项(如 `-v`)和长选项(如 `--version`)[^1]。`getopt` 是 GNU C 库的一部分,通常在大多数 Linux 和 Unix 系统中默认提供。 ### 基本用法 `getopt` 的基本语法如下: ```bash getopt optstring $* ``` - `optstring` 是一个字符串,定义了脚本支持的选项。如果某个选项需要参数,则在该选项字符后加冒号 `:`。 - `$*` 表示所有传递给脚本的命令行参数。 以下是一个使用 `getopt` 的简单示例: ```bash #!/bin/bash # 定义支持的选项 ARGS=$(getopt -o ab:c -- "$@") eval set -- "$ARGS" # 解析选项 while true; do case "$1" in -a) echo "选项 -a 被触发"; shift ;; -b) echo "选项 -b 的参数是: $2"; shift 2 ;; -c) echo "选项 -c 被触发"; shift ;; --) shift; break ;; *) echo "未知选项"; exit 1 ;; esac done # 处理剩余的非选项参数 for arg in "$@"; do echo "非选项参数: $arg" done ``` ### 使用 `getopts` 的替代方案 `getopts` 是 `getopt` 的内置版本,不支持长选项(如 `--version`),但更适合简单的脚本需求[^2]。下面是一个使用 `getopts` 的示例: ```bash #!/bin/bash while getopts "a:b:c" opt; do case $opt in a) echo "选项 -a 的参数是: $OPTARG";; b) echo "选项 -b 的参数是: $OPTARG";; c) echo "选项 -c 被触发";; \?) echo "无效选项: -$OPTARG"; exit 1;; :) echo "缺少参数: -$OPTARG"; exit 1;; esac done ``` ### 高级用法:支持长选项 如果需要支持长选项,可以使用 `getopt` 的增强版本: ```bash #!/bin/bash ARGS=$(getopt -o abc: --long along,blong:,clong:: -- "$@") eval set -- "$ARGS" while true; do case "$1" in -a|--along) echo "选项 -a 或 --along 被触发"; shift ;; -b|--blong) echo "选项 -b 或 --blong 的参数是: $2"; shift 2 ;; -c|--clong) if [ -n "$2" ]; then echo "选项 -c 或 --clong 的参数是: $2" shift 2 else echo "选项 -c 或 --clong 被触发" shift fi ;; --) shift; break ;; *) echo "未知选项"; exit 1 ;; esac done # 处理剩余的非选项参数 for arg in "$@"; do echo "非选项参数: $arg" done ``` ### 总结 - `getopt` 支持短选项和长选项,适合处理复杂的命令行参数。 - `getopts` 是 Bash 内置的,仅支持短选项,适合简单的脚本需求。 - 使用 `getopt` 时,可以结合 `eval set -- "$ARGS"` 来重新排列参数,方便后续处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值