shell脚本参数(getopts命令)

一. getopts

getopts 是 Unix/Linux 中用于解析命令行参数的常用工具,主要用于 Shell 脚本中处理短选项(如 -a、-b value 等)

1. 例子

#!/bin/bash
while getopts d:f: flag; do
        case "$flag" in
                d)
                        workDir=${OPTARG};;
                f)
                        filename=${OPTARG};;
        esac
done
echo $workDir
echo $filename

  

二.getopt

支持长选项

1.例子(短选项)

#!/bin/bash

ARGS=$(getopt -o "a:b:c" -- "$@")
if [ $? -ne 0 ]; then
    echo "Usage: $0 -a <arg> -b <arg> -c"
    exit 1
fi

eval set -- "$ARGS"

while true; do
    case "$1" in
        -a) echo "Option -a with argument: $2"; shift 2 ;;
        -b) echo "Option -b with argument: $2"; shift 2 ;;
        -c) echo "Option -c without argument"; shift ;;
        --) shift; break ;;
        *) echo "Error: unknown option $1"; exit 1 ;;
    esac
done

# 处理剩余的参数
echo "Remaining arguments: $@"

  

使用: ./script.sh -a foo -b bar -c extra

 

2.例子(长选项)

#!/bin/bash

ARGS=$(getopt -o "a:b:hc" -l "alpha:,bravo:,help,charlie" -- "$@")
eval set -- "$ARGS"

while true; do
    case "$1" in
        -a|--alpha)  echo "Alpha: $2"; shift 2 ;;
        -b|--bravo)  echo "Bravo: $2"; shift 2 ;;
        -c|--charlie) echo "Charlie"; shift ;;
        -h|--help)
            echo "Usage: $0 [OPTIONS]"
            echo "  -a, --alpha VALUE   Set alpha value"
            echo "  -b, --bravo VALUE   Set bravo value"
            echo "  -c, --charlie       Enable charlie mode"
            echo "  -h, --help          Show this help"
            exit 0
            ;;
        --) shift; break ;;
        *) echo "Invalid option: $1"; exit 1 ;;
    esac
done

echo "Remaining arguments: $@"

  

使用: ./script.sh --alpha 100 --bravo 200 --charlie --help

posted @ 2025-08-19 20:54  铿锵有力自信且坚定  阅读(8)  评论(0)    收藏  举报