Skrypt:
#!/bin/bash
echo "Napisz \\" help \\" aby wiedziec wiecej "
echo "---------------------------"
#----------------------------------
x=1;
until [ $x = exit ]; do
# petla az do = lancuch znakow rowny exit
echo " :) -------------"
read x
# czytaj i bedzie to "x"
# case - nie dam poniewaz obsluguje tylko 1 slowo
if [ $x == "help" ]
then
echo " exit --> WYJSCIE "
echo " zapisz --> zapisze "
echo " wyczysc --> wyczysci okno "
echo " mango czekoladowe --> kiedy bedzie "
elif [ $x == "wyczysc" ]
then
clear
elif [ $x == "mango czekoladowe" ]
then
echo "Bedze w Sobote"
elif [ $x == "zapisz" ]
then
read y
echo " zapisane :: $y"
elif [ $x == "exit" ]
then
echo "Pa!"
else
echo "Nie wiem oco chodzi..."
fi
done
Nie wiem jak mozna zeby if czytalo wszystkie lancuchy,
probowalem z case i to samo.
W tym przypadku chodzi o lancuchy "mango czekoladowe" .
$ ./test.sh
Napisz " help " aby wiedziec wiecej
---------------------------
:) -------------
mango czekoladowe
./test.sh: line 28: [: too many arguments
./test.sh: line 38: [: too many arguments
./test.sh: line 45: [: too many arguments
./test.sh: line 52: [: too many arguments
./test.sh: line 59: [: too many arguments
Nie wiem oco chodzi...
./test.sh: line 19: [: too many arguments
:) -------------
Zamiast if, spokojnie możesz użyć case i kod nawet krótszy jest. Ja bym to zrobił tak.
menu()
{
echo "Napisz \\" help \\" aby wiedziec wiecej "
echo "---------------------------"
#----------------------------------
echo " exit --> WYJSCIE "
echo " zapisz --> zapisze"
echo " wyczysc --> wyczysci okno "
echo " mango czekoladowe --> kiedy bedzie "
read x
case "$x" in
"exit") echo "Pa" ; sleep 5 ; exit ;;
'mango czekoladowe') echo "Bedzie w sobote" ;;
*) echo "Nie wiem oco chodzi..."
esac
}
menu
Do reszty opcji już sobie uzupełnij.
Zapomniałem dodać, że jak menu ma się wyświetlać na nowo dopóki nie wpisze się exit, to możesz samą funkcję uruchomić w pętli. Można też zrobić prowizoryczną pętlę ;)
menu()
{
echo "Napisz \\" help \\" aby wiedziec wiecej "
echo "---------------------------"
#----------------------------------
echo " exit --> WYJSCIE "
echo " zapisz --> zapisze"
echo " wyczysc --> wyczysci okno "
echo " mango czekoladowe --> kiedy bedzie "
read x
case "$x" in
"exit") echo "Pa" ; sleep 1 ; exit ;;
'mango czekoladowe') echo "Bedzie w sobote" ; menu ;;
*) echo "Nie wiem oco chodzi..." ; sleep 1 ; menu
esac
}
menu
Odnosnie przykladu wyzej
- Ciekawy sposob zapetlenia i dziala :D
- Linie "exit") echo "Pa" ; sleep 1 ; exit ;;
chyba celowo dales na poczatek wyboru case,
bo jak ja dalem na koniec to nie chcialo mi dzialac,
widzi funkcje menu mimo ze w tamtej lini jej nie ma,
no to dalem jako przedostatnia linie i tez dziala.
#!/bin/bash
menu()
{
echo -e " \\n"
echo "Napisz \\" help \\" aby wiedziec wiecej "
echo "---------------------------"
#----------------------------------
read x
case "$x" in
"help") echo " exit --> WYJSCIE "
echo " zapisz --> zapisze"
echo " wyczysc --> wyczysci okno "
echo " mango czekoladowe --> kiedy bedzie " ; menu ;;
"zapisz") read y
echo " zapisane :: $y" ; menu ;;
"wyczysc") clear ; menu ;;
"mango czekoladowe") echo " Bedzie w sobote " ; menu ;;
"exit") echo "Pa" ; sleep 1 ; exit ;;
*) echo " Nie wiem oco chodzi... " ; sleep 1 ; menu
esac
}
menu