[BASH] script maken met "vervanger" voor goto

Pagina: 1
Acties:

  • LollieStick
  • Registratie: Juni 2001
  • Laatst online: 15-12-2025
Hoi,

Jullie lezen het goed, ik ben bezig met het maken van een scriptje om op afroep een CD-ROM te mounten zonder het voor de gebruikers ingewikkelde mount commando te gebruiken.

Ik heb daarvoor het begin al klaar alleen ik loop vast op een bepaald punt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /bin/bash
echo Plaats de gewenste CD-ROM en druk op een willekeurige toets.
echo Druk op Q om af te breken.
eject
read User_Response
if [ User_Response == "q" ] ; then goto einde
else goto koppelen

koppelen:
echo Koppelen
exit
fi

Einde:
eject -t
echo The End
exit
fi


Het probleem is dus dat BASH geen GOTO kent. Hier moet ik dus eigenlij een vervanger voor hebben maar heb tot nu toe nog niets kunnen vinden.

Het principe moet dus wel hetzelfde blijven. Middels de search kwam ik op dit draadje terecht maar echt veel werd ik er niet uit wijs.

tnx

[ Voor 4% gewijzigd door LollieStick op 23-02-2005 12:56 ]


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Waarom zou je daar goto voor gebruiken? Dit kun je beter gewoon in de if houden.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

goto :? :X :D

je kan het natuurlijk ook netjes oplossen :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
echo Plaats de gewenste CD-ROM en druk op een willekeurige toets.
echo Druk op Q om af te breken.
eject
read User_Response

case (User_Response) in
 "koppelen")
  echo Koppelen
  exit
 "q")
  eject -t
  echo The End
  exit
 *)
  echo ongeldige actie
esac


Bash Tutorial - deel 4

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • LollieStick
  • Registratie: Juni 2001
  • Laatst online: 15-12-2025
Spider.007 schreef op woensdag 23 februari 2005 @ 13:09:
goto :? :X :D

je kan het natuurlijk ook netjes oplossen :)
code:
1
Hier stond code


Bash Tutorial - deel 4
Ik heb het van je over genomen but it isn't working :(
syntax error near unexpected token '('
'case (User_Response) in'
Ik heb je linkje ook even doorgelezen maar ben nooit echt een programmeerheld geweest. Heb wel eens wat in qbasic gedaan maar dat stelt ook niet veel voor ;)

edit:
Ik heb het eerste stuk van Wilke ook al doorgelezen. Daar kan ik er niet zo veel over vinden. Ik ga nu het wat geavanceerdere stuk door"eten";) (lezen dus)

[ Voor 46% gewijzigd door LollieStick op 23-02-2005 13:33 ]


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Mjah; er stonden inderdaad geen case afsluiters:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
echo Plaats de gewenste CD-ROM en druk op een willekeurige toets.
echo Druk op Q om af te breken.
eject
read User_Response

case (User_Response) in
 "koppelen")
  echo Koppelen
  exit
 "q")
  eject -t
  echo The End
  exit
 *)
  echo ongeldige actie
esac
Dit had je overigens zelf ook wel uit kunnne vinden ;)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • LollieStick
  • Registratie: Juni 2001
  • Laatst online: 15-12-2025
Het is gelukt. Ik heb het nu wel iets anders gedaan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#! /bin/bash
echo Plaats de gewenste CD-ROM en druk op een willekeurige toets.
echo Druk op Q om af te breken.
eject
echo 
echo Kies Q of een willekeurige toets.
echo
read User_Response

case "$User_Response" in
q)
eject -t
echo De bewerking is afgebroken
;;
*)
eject -t
mount /dev/hdd /mnt/cdrom
echo De CD-ROM is geladen.
esac
exit   ## Zonder dit syntax errors bij het afsluiten van de file
fi       ## Idem


tnx voor het op weg helpen _/-\o_

  • Paul
  • Registratie: September 2000
  • Laatst online: 11:59
Nu klopt die laatste echo niet als je geen cd in de lade hebt gestopt :P

Je kunt eventueel nog het resultaat van mount bekijken (errorlevel heette dat in dos, geen idee hoe dat in bash heet) om te beslissen of je "gelukt" of "mislukt" zegt :)

Die syntax-errors snap ik wel :) Er staat nog een fi, maar je hebt geen if meer :) Je exit is nu gewoon symptoombestrijding ;)

Ik heb hem zelf ook even gedraait, en (op een paar "bla.sh: eject: command not found" na) krijg ik geen enekele foutmelding als ik die exit en fi er niet in heb staan :)

Nog maar een edit: je code werkt niet volgens specs :P Als je "Q" + enter geeft dan laadt hij de cdrom, terwijl hij juist dan moet stoppen. Je moet nu al user maar gokken dat je een lowercase q wilt hebben :)

[ Voor 70% gewijzigd door Paul op 23-02-2005 14:10 ]

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Bas!
  • Registratie: April 2000
  • Laatst online: 30-11-2025
http://www.tldp.org/LDP/abs/html/testbranch.html#EX29

Hierin gebruikt men geen haken maar quotes en dollartekens, en dat werkt

edit:

misschien eerst een refresh doen voor je post, bassie

[ Voor 23% gewijzigd door Bas! op 23-02-2005 14:04 ]


  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11-2025
If errorlevel = 1 echo Gelukt
If errorlevel = 2 niet gelukt:P
Pagina: 1