Toon posts:

[bash script] newbie vraag

Pagina: 1
Acties:
  • 77 views sinds 30-01-2008

Verwijderd

Topicstarter
Ben nu zelf wat aan het experimenteren met scripts in Linux Red Hat 6.2

Ik ben enkele vragen tegengekomen die blijkbaar zo logisch zijn dat ze nergens vermeld worden :s

Wat voor een file moet een bash script precies zijn? Moet deze de extentie ".txt" hebben of niet? Ik heb momenteel zitten testen met ".txt" en zonder (gewoon niets) en beiden lukken niet :(.

Voor het uitvoeren van een bash script, typ je: "./naamscript"

Maar wanneer ik dit doe, krijg ik deze melding: "bash$ command not found"

Ik heb een handleiding gevonden op google zitten volgen voor het scripten te leren en volgens hun zou het liggen aan mijn eerste regel ("#!/bin/bash") :/

Mijn (voorlopig weinig) code:

code:
1
2
3
4
5
#!/bin/bash
echo "Uptime"
bash$ uptime

exit 0


Zouden jullie me even verder kunnen helpen want ik weet namelijk niet of de fout ligt aan de bestandsnaam, de manier waarop ik het uitvoer of mijn code :?


Alvast bedankt!


ps: de "bash handleiding" die ik gebruikt heb

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 22-01 12:46
Je zult zo'n file ook executable moeten maken (+x) & het pad moeten aangeven ...

Naast de bash tutorial raad ik je ook aan om even een Linux tutorial tot je te nemen ;)

  • JeroenE
  • Registratie: Januari 2001
  • Niet online
Wat voor een file moet een bash script precies zijn? Moet deze de extentie ".txt" hebben of niet? Ik heb momenteel zitten testen met ".txt" en zonder (gewoon niets) en beiden lukken niet :(.
Extensies zijn een uitvinding die niet onder de command prompt van *nix ondersteunt worden. Meestal hebben scripts geen aparte extensie, maar als je het toch wil gebruiken is ".sh" degene die nog wel eens wordt gebruikt.
Voor het uitvoeren van een bash script, typ je: "./naamscript"
Maar wanneer ik dit doe, krijg ik deze melding: "bash$ command not found"
Om een script uit te voeren moet je het eerst executable maken. Anders weet *nix niet of het een gewoon tekstbestand si, een plaatje of een executable. met het commando
code:
1
chmod +x naamscript
maak je je script executable.
#!/bin/bash"
Als die shell bestaat dan is er geen probleem; kijk maar eens met
code:
1
ls -l /bin/bash
of dat bestand bestaat. In het algemeen wordt in scripts echter wel /bin/sh gebruikt.

Verwijderd

Topicstarter
ThaRups schreef op:
Naast de bash tutorial raad ik je ook aan om even een Linux tutorial tot je te nemen ;)
had het script al executable gemaakt met chmod 555

vind het trouwens een heel ongepaste opmerking

  • Wilke
  • Registratie: December 2000
  • Laatst online: 22:17
Lees ook de Bash Programming - Introduction HOWTO.

Zoals hierboven al uitgelegd wordt, zijn er weinig dingen die UNIX minder interesseren dan de extensie van een file (hoewel veel programma's er wel gebruik van maken, natuurlijk).

Voor de rest moet je hier wel mee verder kunnen - leen anders een Linux-boek voor beginners van de bieb o.i.d. :)

Dit topic gaat dicht, want dit is wel heel basic allemaal.

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 20:57

Kees

Serveradmin / BOFH / DoC
De bashhandleiding die je daar hebt is de beste, en zou je anders ook van mij gekregen hebben ;)

Maar nu je script. Er zijn een paar dingen fout:

Ten eerste maakt het niet uit welke extensie je het scriptje geeft, .txt .sh .bin .exe .com .bat whatever, linux kijkt er niet naar als hij iets wil uitvoeren (vandaar ook dat de meeste files niet eens een extensie hebben)

Waar linux wel naar kijkt is het al dan niet uitvoerbaar zijn van een bestand. Dit kun je zelf oook bekijken door ls -l in te typen, staat er vooraan iets als "-rwxr-xr-x" dan is het bestand uitvoerbaar, ontbreekt echter de x (van executable) dan kun je het betand alleen uitvoeren door hem door een shell heen te gooien (met "bash scriptje" bijvoorbeeld).

Om een scriptje meteen uitvoerbaar te maken, moet je hem 'chmod'en, in dit geval: 'chmod +x script', hierna kun je hem uitvoeren met ./script

Vervolgens de inhoud, ook hier gaat wat mis:

#!/bin/bash << deze regel klopt
echo "Uptime" << ook deze gaat goed, je krijgt te zien "Uptime"
bash$ uptime << dit gaat niet goed, want bash zal nooit het bestand bash$ kunnen vinden, dit moet je dus weghalen, en veranderen naar 'uptime' eventueel zelfs door het volledige path naar uptime; namelijk '/usr/bin/uptime' (kun je controleren met 'which uptime')

exit 0 >> Dit is redelijk niet nodig, het mag wel, maar als je de exitcode verder niet gaat gebruiken in andere scripts, kun je deze ook wel gewoon weglaten, bash zal namelijk als hij aan het einde gekomen is vanzelf stoppen met de uitvoer en terugkeren naar de prompt.

Kortom, je scriptje:
code:
1
2
3
#!/bin/bash
echo "Uptime: "
/usr/bin/uptime

Eventueel doe je zelfs echo -n, kijk maar eens wat dat doet.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • Wilke
  • Registratie: December 2000
  • Laatst online: 22:17
Okay, er staat trouwens in de NOS FAQ een link naar een behoorlijk goede 'basiscursus' die alle veelgebruikte commando's e.d. duidelijk toelicht:

Hier kun je 'm vinden.

Als je dan nog vragen hebt dan horen we het wel - wel eerst zelf lezen en proberen natuurlijk :)
Pagina: 1

Dit topic is gesloten.