Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Thomas123 11 Prosince 2009, 23:21:42

Název: Prosím o pomoc na jednoduchém bash skriptíku
Přispěvatel: Thomas123 11 Prosince 2009, 23:21:42
Zdravím,

potřebuji vytvořit jednoduchý bash skriptík, který by měl laicky dělat toto: zadám ./mujskript.sh -t neco -z toto

A v skriptu budu do jednoduchých příkazů doplňovat hodnoty "z" a "t". Snad chápete, co mám na mysli. Jak na to?
Název: Re: Prosím o pomoc na jednoduchém bash skriptíku
Přispěvatel: premet 11 Prosince 2009, 23:31:16
Např.
http://aplawrence.com/Unix/getopts.html (http://aplawrence.com/Unix/getopts.html)
nebo si vygoogli getopt|getopts  ;)
Název: Re: Prosím o pomoc na jednoduchém bash skriptíku
Přispěvatel: arrange 11 Prosince 2009, 23:50:25
potřebuji vytvořit jednoduchý bash skriptík, který by měl laicky dělat toto: zadám ./mujskript.sh -t neco -z toto
?A nestačilo by ti
Kód: [Vybrat]
./mujskript.sh neco toto
echo $1
neco
echo $2
toto
Název: Re: Prosím o pomoc na jednoduchém bash skriptíku
Přispěvatel: Thomas123 12 Prosince 2009, 00:11:17
No, tak nad tím jsem nepřemýšlel  ;D

Jinak, kdybych měl použít ten první návrh, tak by to vypadalo nějak takto?

Kód: [Vybrat]
#!/bin/bash
args=`getopt t:z: $*`
set -- $args
for i
do
  case "$i" in
        -t) shift;T_PARAMETR=$1";shift;;
        -z) shift;Z_PARAMETR=$1";shift;;
  esac
done

echo T_PARAMETR
echo C_PARAMETR

Chápu to tak, že s tím nahoře u toho getopt, tak dvojtečka má být tam, kde se očekává nějaký vstup a bez dvojtečky v případě, že chci, aby to bylo pouze nastavené? A to shift;; funguje jako ukončení toho přepínače? Dále se chci zeptat, zda $1 značí všechny znaky po první mezeře za přepínačem až k další mezeře?
Název: Re: Prosím o pomoc na jednoduchém bash skriptíku
Přispěvatel: arrange 12 Prosince 2009, 00:18:05
Dále se chci zeptat, zda $1 značí všechny znaky po první mezeře za přepínačem až k další mezeře?
Ano.
Kód: [Vybrat]
./secti 20 56
echo $(($1+$2))
76