[Bash] Getopts i parametry

0

Mam taki skrypt w Bashu:

#!/bin/bash

function anticamp {
    if [[ "$1" == "0" ]]
    then
        echo "sv_anticamper 0"
    elif [[ -z "$1" ]]
    then
        echo "sv_anticamper 0"
    else
        echo "sv_anticamper 1"
        echo "sv_anticamper_time $1"
         echo "sv_anticamper_range 100"
    fi
}

function spree {
    if [[ "$1" == "0" ]]
    then
        echo "sv_killingspree 0"
    elif [[ -z "$1" ]]
    then
        echo "sv_killingspree 0"
    else
        echo "sv_killingspree 1"
         echo "sv_killingspree_kills $1"
    fi
}

function nopublic {
    echo "sv_nopublicchat 1"
}

function nopowerup {
    echo "sv_powerups 0"
}

function lan {
    echo "sv_high_bandwidth 1"
    echo "sv_register 0"
}

helptext="Usage: $0 [-a(anticamp) time] [-s(spree) kills] [-p(nopowerup)] [-l(lan)] [-m(specificmaps)] name [gametype]"
conf="conf.conf"
maps=0

while getopts "a:(anticamp)n(nonpublic)s:(spree)f:(confile)h(help)p(nopowerup)l(lan)m(specificmaps)" o
do	case $o in
	a)	anticamp $OPTARG;;
	s)	spree "$OPTARG";;
	n)	nonpublic;;
	p)	nopowerup;;
	l)	lan;;
	f)	conf="$OPTARG";;
	m)	maps=1;;
	h)	echo >&2 "$helptext"
		exit 1;;
	[?])	echo >&2 "$helptext"
		exit 1;;
	esac
done
shift $(($OPTIND - 1))

echo "sv_name $1"

if [[ -e $conf ]]
then
    echo grep '[a-zA-Z0-9"]' $conf
fi

Skrypt ma za zadanie tworzyć plik konfiguracyjny serwera do gry Teeworlds.

//EDIT pomyliłem się w warunkach, ale nadal jest problem gdyż nie chcą działaś długie opcje po uruchomieniu np. teeconf.sh --spree10 alfa otrzymuję komunikat

teeconf.sh: zabroniona opcja -- -
Usage: teeconf.sh [-a(anticamp) time] [-s(spree) kills] [-p(nopowerup)] [-l(lan)] [-m(specificmaps)] name [gametype]

0

bashowe getopts nie obsluguje dlugich parametrow, sprobuj z poleceniem zewnetrznym getopt (psiku... bez s na koncu ;] )

sam zreszta sprawdz:

#!/bin/bash

while getopts "a:(anticamp)n(nonpublic)s:(spree)f:(confile)h(help)p(nopowerup)l(lan)m(specificmaps)" o
do        case $o in
        a)        echo a $OPTARG;;
        s)        echo s $OPTARG;;
        n)        echo n;;
        p)        echo p;;
        l)        echo l;;
        f)        echo f $OPTARG;;
        m)        echo m;;
        h)        echo h;;
        [?])      echo "?";;
        esac
done

shift $(($OPTIND - 1))


./getopts.sh --help
./getops.sh: illegal option -- -
?
h
l
p

1 użytkowników online, w tym zalogowanych: 0, gości: 1