Mit rontok el ebben a scriptben? (shell script, linux)
#!/bin/bash
kiir(){
if [[ $# -eq 1 ]]
then
case $1 in
n) echo "jó napot";;
e) echo "jó estét";;
*) echo "érvénytelen betű";;
esac
else echo "egy paraméter kell: vagy n vagy e. "
fi
}
kiir
Nincs kap kiir funkciódnak bemenő paramétert. $1 mindig üres lesz.
Próbáld így:
kiir $1
Ejj, de nem tudok ma szimultán írni... Szóval nem adosz át bemenő paramétert a kiir rutinodnak.
Hívd így: kiir $1
Huh, tényleg. xd
Én úgy akartam, hogy vagyok a terminálban és ott írom pl. azt, hogy:
./proba.sh n
Ment a zöld kéz. :)
Köszönöm :)
Kétféle megoldás is akad: Az egyik, hogy nem függvénybe teszed a logikát, hanem simán inline; a másik, hogy átadod a függvénynek a kérdéses paramétert.
Ezen felül beleteheted egy változóba is, de nem túl elegáns megoldás:
export user_choice=$1
do_work() {
˙˙˙˙case $user_choice in
˙˙˙˙˙˙˙˙n) echo "Jó napot!"
˙˙˙˙˙˙˙˙e) echo "Jó estét!"
˙˙˙˙˙˙˙˙*) echo "Érrvénytelen betű!"
˙˙˙˙esac
}
if [[ $# -eq 1 ]]
then
˙˙˙˙kiir
else
˙˙˙˙echo "Egy paraméter kell: n, vagy e"
fi
A probléma ezzel a változóhasználat. Nem szép dolog, ha a szubrutin a saját scope-ján kívülre nyúlkál, hacsak nem elkerülhetetlen.
Jó problémás témakört választottál magadnak :)
Az lehet, hogy problémás téma. :D
Ha a fgv-en belül van a változó (valami=$1) az már jobb, ugye?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!