Portál AbcLinuxu, 13. května 2025 17:02

Dotaz: víc parametru na jednom řádku

19.3.2008 11:10 onas2
víc parametru na jednom řádku
Přečteno: 351×
Odpovědět | Admin
Dobrý den, chtěl bych se optat. mám kod
#!/bin/bash

while getopts ab VOLBA

do

  case $VOLBA in

  a) echo "zadali jste parametr A";;

  b)echo "zadali jste paramtr B";;

  *) echo "zadali špatná paramtr
     exit 1;;
     


  esac

done
chtěl bych se zeptat, jak by se tento kod měl upravit abych v console mohl zadávat např: ./neco.sh -a text1 -b text2. a jak bych z toho mohl dostat text1 a text2, což je vlastně text kterej zadá uživatel. děkuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.3.2008 11:34 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: víc parametru na jednom řádku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Předem se omlouvám, že místo toho abych zmínil řešení pro getopts, uvádím řešení s getopt :-) účel ale splňuje.
less /usr/share/doc/util-linux/examples/getopt-parse.bash
19.3.2008 11:41 onas2
Rozbalit Rozbalit vše Re: víc parametru na jednom řádku
děkuji to vypadá slibně. Budou se pak ty jednotlivý texty dát ukládat do proměnných?
19.3.2008 11:50 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: víc parametru na jednom řádku
Určitě.
19.3.2008 12:08 onas2
Rozbalit Rozbalit vše Re: víc parametru na jednom řádku
nezlobte se, ale já to v tom prostě nevidím :-(

když zadám tento skript ./neco.sh -a text1 -b text2 -c text3

jak by vypadli 3 proměnné pro ty text1 až text3?
TEMP=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
     -n 'example.bash' -- "$@"`

if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"

while true ; do
        case "$1" in
                -a|--a-long) echo "Option a" ; shift ;;
                -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
                -c|--c-long) 
                        case "$2" in
                                "") echo "Option c, no argument"; shift 2 ;;
                                *)  echo "Option c, argument \`$2'" ; shift 2 ;;
                        esac ;;
                --) shift ; break ;;
                *) echo "Internal error!" ; exit 1 ;;
        esac
done
echo "Remaining arguments:"
for arg do echo '--> '"\`$arg'" ; done
19.3.2008 12:27 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: víc parametru na jednom řádku
$ priklad -a A -b B -c C
#!/usr/bin/env bash

TEMP=`getopt -o a:b:c: -n 'priklad' -- "$@"`
eval set -- "$TEMP"

while true; do
	case "$1" in
		-a) VAR_A="$2"; shift 2 ;;
		-b) VAR_B="$2"; shift 2 ;;
		-c) VAR_C="$2"; shift 2 ;;
		*) echo "ostatni: "$@""; break ;;
	esac
done
echo "$VAR_A" "$VAR_B" "$VAR_C"
19.3.2008 23:10 onas2
Rozbalit Rozbalit vše Re: víc parametru na jednom řádku
děkuji, tohle je přesně to co jsem potřeboval.:-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.