[bash] Interactief menu maken - part2

Pagina: 1
Acties:

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 27-01 19:49

CrankyGamerOG

Assumption is the mother.....

Topicstarter
OK na enig wat koffie is me brein ietwat op gang

het volgende script is het onderwerp :

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#! /bin/sh

vzstart() {
sudo /usr/bin/vz-start
f_menu
}

vzrestart() {
sudo /usr/bin/vz-restart
f_menu
}

vzstop() {
sudo /usr/bin/vz-stop
f_menu
}

vzlist() {
sudo /usr/bin/vz-list
f_menu
}

vzlista() {
sudo /usr/bin/vz-list -a
f_menu
}

f_menu() {
#tput clear

cat << EOF
################################################
#               VZ Admin Menu                  #
################################################
#                                              #
#                1) Vz start                   # 
#                2) Vz restart                 #
#                3) Vz stop                    #
#                4) Vz list                    #
#                5) Vz list ALL                #
#                Q) Quit                       #
################################################

EOF

echo -n "Invoer> "

read _keuze

case "$_keuze" in
 1) vzstart ;;
 2) vzrestart ;;
 3) vzstop ;;
 4) vzlist ;;
 5) vzlista ;;
 Q|q) exit ;;
esac
}

f_menu


Op dit moment functioneren alleen de vzlist functies.
Dit uiteraard omdat er geen 2e variable vereist is, de functies vzstart , wat dan het script vz-start aanhaalt vereist een 2e variabele.
(bijv vz-start 101)

Hoe kan ik nadat ik bijv voor optie 1 heb gekozen , nog een 2e input laten geven en dat hij daarna die input meeneemt en verstuurd ?

Dus ik krijg het menu, ik geef dan 1<enter>
en dat ik dan de optie krijg om een variabele in te geven, en dat hij deze dan meestuurt naar het uit te voeren script?

(ik hoop dat ik duidelijk ben :X )

KPN - Vodafone Ziggo Partner


Verwijderd

Simpel je kunt toch in die vzstart() functie een user input en vraag opnemen?

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 27-01 19:49

CrankyGamerOG

Assumption is the mother.....

Topicstarter
Verwijderd schreef op vrijdag 03 april 2009 @ 11:18:
Simpel je kunt toch in die vzstart() functie een user input en vraag opnemen?
simpel voor jou wellicht ;), voor mij net wat minder...
Zou je a.d.h.v een simpel voorbeeld je wat kunnen verduidelijken ?


code:
1
2
3
4
5
6
vzstart() {
echo -n "Geef VEid> "
read veid
sudo /usr/bin/vz-start $veid
f_menu
}

danke schon

[ Voor 16% gewijzigd door CrankyGamerOG op 03-04-2009 11:32 ]

KPN - Vodafone Ziggo Partner


Verwijderd

Yep zo zou ik het ook doen :)

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16:23

deadinspace

The what goes where now?

Ik zou aanraden om voor die menu's iets als het dialog commando te gebruiken, en niet zelf te gaan lopen echo-en/readen. Makkelijker en handiger ;)

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 27-01 19:49

CrankyGamerOG

Assumption is the mother.....

Topicstarter
deadinspace schreef op zaterdag 04 april 2009 @ 00:42:
Ik zou aanraden om voor die menu's iets als het dialog commando te gebruiken, en niet zelf te gaan lopen echo-en/readen. Makkelijker en handiger ;)
Ik weet helaas niks van het dialog commando af ik zal zo even eens gaan nalezen.

Waar ik nu echter tegenaan loop is het volgende.
Ik wil graag de output van een ls gebruiken als opties voor een keuze.
Hoe zou dat in zn werk gaan?

bijv
jef@ucp:/$ ls /dir
test1.tar.gz test2.tar.gz test3.tar.gz
jef@ucp:/$
dat dan test1 optie 1 word etc ?

KPN - Vodafone Ziggo Partner


Verwijderd

Dit is een voorbeeldje hoe ik het ongeveer zou doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

for FILE in *.txt
do
echo $FILE
done
echo -n "Welk bestand wilt u lezen? " 
read INPUT
if [ ! -r "$INPUT" ] 
then
echo "Het bestand is niet te lezen."
exit 1
else
cat $INPUT
fi


En de praktijk:
code:
1
2
3
4
5
6
7
stacheldraht@baldr:~/Desktop/TEST/TXT$ sh menu.sh 
blaat1.txt
blaat2.txt
blaat3.txt
Welk bestand wilt u lezen? blaat1.txt
inhoud 1
stacheldraht@baldr:~/Desktop/TEST/TXT$

[ Voor 27% gewijzigd door Verwijderd op 04-04-2009 13:50 ]


  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 27-01 19:49

CrankyGamerOG

Assumption is the mother.....

Topicstarter
Verwijderd schreef op zaterdag 04 april 2009 @ 13:46:
Dit is een voorbeeldje hoe ik het ongeveer zou doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

for FILE in *.txt
do
echo $FILE
done
echo -n "Welk bestand wilt u lezen? " 
read INPUT
if [ ! -r "$INPUT" ] 
then
echo "Het bestand is niet te lezen."
exit 1
else
cat $INPUT
fi


En de praktijk:
code:
1
2
3
4
5
6
7
stacheldraht@baldr:~/Desktop/TEST/TXT$ sh menu.sh 
blaat1.txt
blaat2.txt
blaat3.txt
Welk bestand wilt u lezen? blaat1.txt
inhoud 1
stacheldraht@baldr:~/Desktop/TEST/TXT$
Bedankt voor je input, maar wat ik echter wil is dat men niet het hele bestandsnaam hoeft over te typen, maar simpelweg optie 1/2/3 etc., wellicht te onduidelijk omschreven door mij....
Het rechtstreeks typen van de naam had ik zelf ook al bereikt dmv read.

Jij hanteert nu ook een cat, wat ik wil is dat de opties dan meegenomen worden als variable naar een ander stuk code

code:
1
2
3
4
5
6
7
sudo /usr/bin/vz-list -a
echo -n "Geef een LEEG VEid> "
read veid
sudo ls -lha /vz/template/cache
echo -n "Kies een template> "
read template
sudo vzctl create $veid --ostemplate $template


Nu moet men bij template de naam zelf overtypen, ik wil dus dat men alleen maar 1/2/3 ofzo hoeft te kiezen.... ik hoop dat je me snapt.
Ik kan natuurlijk hard een stuk code schrijven voor elke template, maar ik zou graag willen dat dit automatisch kan, zodat ik niet bij elke nieuwe template die erbij komt/vervangen word ik de code moet aanpassen.

[ Voor 28% gewijzigd door CrankyGamerOG op 04-04-2009 18:17 ]

KPN - Vodafone Ziggo Partner


Verwijderd

Ah nu snap ik het :) Hier vind je een leuke discussie daarover:

http://www.computing.net/...t-from-ls-files/8280.html

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 27-01 19:49

CrankyGamerOG

Assumption is the mother.....

Topicstarter
thnx, alhoewel het niet echt helemaal goed werkt :X
ik krijg vage erros als ik het script 1 op 1 overneem, maar ik zoek het wel ffies uit.

KPN - Vodafone Ziggo Partner

Pagina: 1