Diskuze: Linux bash - case s dvojitym vstupem
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
přečtení těch dvou vstupů samozřejmě funguje v pořádku
#!/bin/bash
echo -n "zadejte jméno: "
read jmeno
echo -n "zadejte vek: "
read vek
pak si to spoj
např.
jmenoAvek="${jmeno}|${vek}"
case $jmenoAvek in
"franta|5") echo "franta 5" ;;
"pepa|8") echo "pepa 8" ;;
esac
Děkuji moc! važím si tvé pomoci, mohl by jsi mi jěště prosím říct jak se říká tomu spojení které jsi udělal ? funkce? procedura? učím se to sám, tudíž chci vědět co co znamená a ne hloupě používat rady
jěště jednou děkuji
To je prostě spojení řetězců. Možná ti ta syntaxe příjde divoká (mně teda jo), mohl by jsi to zapsat i takto
jmenoAvek=$jmeno"|"$vek
což je o něco blíž klasickým jazykům
už tomu začínám rozumět , díky.
jen menší otázečka když se to teď tím řetězcem spojilo a chci tam dát
chybovou hlášku funguje mi to trošku jinak, dal jsem na konec scriptu před
esac toto
*) echo Zadali jste neznamy parametr, nesprávné jméno či věk
exit 1;;
ale potřebuju aby mi to hodilo chybu už při zadání prvního vstupu tj. jméno aby to vyhodilo, hned když někdo napíše třeba karel, a ne až špatně ten věk
poradíš mi jěště s tímto?
To uděláš velmi jednoduše. Čtení uživatelského vstupu dáš do cyklu, který ukončíš ve chvíli kdy uživatel zadá validní vstup. Tímto způsobem si pak ošetříš cokoliv. Např. aby jméno byly 2 slova, aby věk byl číslo apd.
while true; do
echo -n "zadejte jméno: "
read jmeno
if [ ! -z "${jmeno}" ]; then
break
fi
done
kdyby jsi něčemu nerozuměl tak si pročti články o cyklech a
podmínkách. Pěknej souhr jak se dá testovat v bashi je zde
http://www.linuxexpres.cz/…/bash-11-dil
Děkuji ti, ale stále mě to pouští když píšu uplný blbosti až ke druhýmu vstupu. dělám něco špatně?
echo "xxxxxx"
echo "Jména: Kamil,Ondra,Thomas.."
while true; do
echo -n "zadejte jméno: "
read jmeno
if [ ! -z "${jmeno}" ]; then
break
fi
done
while true; do
echo -n "zadejte věk: "
read predmet
if [ ! -z "${věk}" ]; then
break
fi
done
jmenoAvek="${jmeno}|${vek}"
Co jsou ty úplný blbosti? -z testuje jestli je proměnná prázdná. Jestli chceš aby uživatel zadal jméno z nějakého předdefinovaného seznamu tak na to budeš muset jinak.
Zobrazeno 8 zpráv z 8.