首页 > 解决方案 > 如何强制为 bash 脚本设置间隔选项

问题描述

我有以下脚本。

我想对其进行修改,以便如果我要temp.sh使用这两个选项进行调用,我将不得不将它们隔开。即:对脚本的调用temp.sh -fc30应该是无效的,而应该是temp.sh -f -c 30

     ARGS=$(getopt -o c:f -l "charlie:fox" -n "temp.sh" -- "$@");

    
    #bad args
    if [ $? -ne 0 ];
    then
        exit 1
    fi
    
    eval set --"$ARGS";
    
    while true; do  
        
        case "$1" in
            -c|--charlie)
                shift;
                if [ -n "$1" ]; then
                    echo "-c =: $1";
                    shift;
                fi
                ;;  
            -f|--fox)
                shift;
                echo "fox used";
                ;;      
            
            
            --)
                shift;
                break;
                ;;
        esac
    done

标签: bashscriptgetopt

解决方案


只是不要使用getopt.

#!/bin/bash

# parse options

while [[ $# -gt 0 ]]; do
    case $1 in
        -c|--charlie)
            echo "$1 = $2"
            shift
        ;;
        -f|--fox)
            echo "fox used"
        ;;
        --)
            shift
            break
    esac

    shift
done

# do script

推荐阅读