Portál AbcLinuxu, 5. května 2025 03:16

Dotaz: Bash skript-úvod

29.9.2014 17:33 Týna
Bash skript-úvod
Přečteno: 446×
Odpovědět | Admin
Ahoj, potřebuji trošku něco vysvětlit. dostali jsme první úkol, který zní:

Řekněme, že je les, v něm žijí zvířátka a děsně rády hrají kriket. Medvěd je nejsilnější a vyhraje nad všemi zvířaty, mimo zajíčka. Hrají-li dvě stejná zvířata, hrají od úsvitu do soumraku a pak jdou na večeři...

Připravte bash shell skript tak, že: Přijme dva parametry - první a druhé zvíře

Vypíše odpověď v závislosti na tom o jaká zvířata jde

Případy k rozlišení (na pořadí zvířat jako parametrů nezáleží):

Medvěd a medvěd - "Medvědi hrají kriket"

Medvěd a zajíček - "Smůla medvěde"

Medvěd a jiné zvíře (ne medvěd, ne zajíček) - "Medvěd je vítěz"

Dvě stejná zvířata (ne medvědi) - "Nevím, kdo vyhraje"

v tomhle jsem dost mimo za prvé: co si mám stáhnout, abych tu úlohu mohla vypracovat? a jak na to? asi je to jednoduché, jen prostě vůbec nevím s čím začít...
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 29.9.2014 18:35 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Bash skript-úvod
Odpovědět | | Sbalit | Link | Blokovat | Admin
Stahnout zrejme nepotrebujes nic, mel by ti stacit bash, coz predpokladam mas.

Bude se ti hodit umet pouzivat podminky, pomoct by mohl tento clanek. Muzes klidne mrknou i na ostatni dily toho serialu.

Tady je jednoducha otazka. Je to psany na rychlo - dopln si dalsi moznosti + napr. kontrolu ze uzivatel zadal v obou parametrech zvire.
#!/bin/bash

if [ $# -ne 2 ]; then
    echo "Zadej prave dve zvirata"
elif [ $1 == $2 ];  then
    if [ $1 == "medved" ]; then
        echo "Medvědi hrají kriket"
    else
        echo "Nevím, kdo vyhraje"
    fi
elif [ $1 == "medved" -o $2 == "medved" ]; then
    if [ $1 == "zajic" -o $2 == "zajic" ]; then
        echo "Smůla medvěde"
    else
        echo "Medvěd je vítěz"
    fi
fi
Don't panic!
29.9.2014 18:47 Týna
Rozbalit Rozbalit vše Re: Bash skript-úvod
Díky :) už to trošku chápu, ale máme k tomu používat kromě IF i nějaký TEST, nevíš o co jde?
David Watzke avatar 29.9.2014 18:49 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash skript-úvod
[ $1 == $2 ] je ve skutečnosti v podstatě totéž jako test $1 == $2, takže test se v té ukázce využívá hojně. Ale je dobrým zvykem dávat proměnné do uvozovek.
[ "$1" == "$2" ]
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
29.9.2014 19:01 Týna
Rozbalit Rozbalit vše Re: Bash skript-úvod
jasně ;) ještě ten první řádek-zadání parametru(dvou zvířat) [ $# -ne 2 ], co tam znamená to -ne? nikde to nemůžu najít
Tarmaq avatar 29.9.2014 19:07 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Bash skript-úvod
jak uz ti bylo doporuceno, pust si man test. Pise se tam:
       INTEGER1 -ne INTEGER2
	      INTEGER1 is not equal to INTEGER2
s tim ze $# je pocet zadanych parametru. Jinak jak je doporuceno vyse, promenne davej do uvozovek, tedy [ "$#" -ne 2 ]
Don't panic!
29.9.2014 19:44 Týna
Rozbalit Rozbalit vše Re: Bash skript-úvod
Mám to, díky moc! :)
29.9.2014 20:33 nobody
Rozbalit Rozbalit vše Re: Bash skript-úvod
tady mas po hromade vsechny mozne porovnavaci operatory
29.9.2014 18:54 2012 | skóre: 16 | blog: co_me_dneska_napadlo
Rozbalit Rozbalit vše Re: Bash skript-úvod
test je normalni prikaz v terminalu:
man test
jinak abys primo videla, co se ve skriptu po spusteni odehrava:
bash -x /cesta/ke/skriptu.sh
29.9.2014 18:35 2012 | skóre: 16 | blog: co_me_dneska_napadlo
Rozbalit Rozbalit vše Re: Bash skript-úvod
Odpovědět | | Sbalit | Link | Blokovat | Admin
napises:
bash /cesta/tvuj_skript.sh medved zajic
a vystupem skriptu bude text:
Smůla medvěde
ted jen vymyslet telo toho skriptu...
Fuky avatar 29.9.2014 20:07 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Bash skript-úvod
Odpovědět | | Sbalit | Link | Blokovat | Admin
Seriál: BASH
-- RÁMO: psí tábor , ETriatlon: Výuka plavání

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.