getopts 命令

背景:

希望实现 test.sh -h 127.0.0.1 -p 6379 格式的脚本调用

实现:

getopts

#!/bin/bash
# 语法格式 getopts optstring name [arg...]
# 如果选项字符后面跟着一个冒号,则表明该字符选项需要一个命令行参数
# ":h:p:s"以冒号开头,则表明当命令行出现了optstring中没有的参数将不会提示错误信息

# 定义默认值
host="127.0.0.1"
port="6379"
msg="False"

# 帮助函数
help(){
cat <<EOF
  usage: 
         $0 -h 127.0.0.1
         $0 -p 6379
         $0 -s
         $0 -h 127.0.0.1 -p 6379 -s
EOF
}

# 处理命令行参数
while getopts ":h:p:s" opt; do
    case $opt in
    # getopts命令每次被调用时,它会将下一个选项字符放置到变量中,OPTARG则可以拿到参数值
        h)
            host=$OPTARG
            ;;
        p)
            port=$OPTARG
            ;;
        s)
            msg="True"
            ;;
        *)
            echo "Invalid option: -$OPTARG" >&2
            help
            exit 1
            ;;
 
    esac
done

# 输出结果
echo "${host}:${port} ${msg}"

root@master01:~# bash 1.sh -h 127.0.0.1 -p 6379 -s
127.0.0.1:6379 True

参考1

posted @ 2024-02-19 16:06  mingtian是吧  阅读(1)  评论(0编辑  收藏  举报