Vraag & Antwoord

OS Linux

oefening shell-script

26 antwoorden
  • Ik moet voor het avondonderwijs een pak oefeningen maken voor het vak Linux. Die lukken me redelijk, echter met shellprogramma's wil het me niet lukken. Ik zal 2 voorbeelden geven : 1) programmeer een shellprogramma "hoeveel". Dit programma toont je hoeveel mensen momenteel gebruik maken van het systeem. bv $ hoeveel Er zijn momenteel [22u34] 17 gebruikers. 2) Schrijf een programma "weekend". Dit programma zegt je of het al dan niet weekend is: bv $ weekend Vandaag is het weekend $ weekend Vandaag is een weekdag Ik snap er niet veel van :oops:
  • He leuke oefeningen zijn dat :) Probeer even in konqueror via [b:55c41eb6bd]man:/bash[/b:55c41eb6bd] in de manpagina's van bash (of via [b:55c41eb6bd]info:/bash[/b:55c41eb6bd] in de infopagina's van bash, mochten die er zijn, info is meestal wat overzichtelijker..) uit te vogelen welke commando's er nodig zijn voor je opdracht. Een shell script ziet er doorgaans zo uit: [code:1:55c41eb6bd] #!/bin/bash echo dit is een shell script exit [/code:1:55c41eb6bd] Sla dit op onder een naam, doe vervolgens [b:55c41eb6bd]chmod 777 ./shellscriptnaam[/b:55c41eb6bd] en typ achter de prompt ./shellscript om deze uit te voeren. Als de uitvoer [b:55c41eb6bd]dit is een shell script[/b:55c41eb6bd] is, dan weet je dat bovenstaand script werkt. succes, Max
  • Ik vond in de [url=http://www.tldp.org/LDP/abs/html/]Advanced Bash-Scripting Guide[/url] op een prima manier uitgelegd hoe je shell-scripts moet maken en welke leuke dingen je er mee kan doen: volgens mij een aanrader!
  • Met het commando [b:d6d0ae2130]date[/b:d6d0ae2130] kun je uitvogelen welke dag het is.
  • Bedankt voor de tips. Ik ben tot het volgende gekomen en het werkt :P :P 1. HOEVEEL tel=`who | wc -l` uur=`date +%ku%M` echo Er zijn momenteel [$uur] $tel gebruikers 2. WEEKEND dag=`date +%w` if test $dag -eq 0 -o $dag -eq 7 then echo "Vandaag is het weekend" else echo "Vandaag is een weekdag" fi
  • Het enige dat ik bekeken heb is[quote:84278a1014]if test $dag -eq 0 -o $dag -eq 7[/quote:84278a1014] man date[code:1:84278a1014]%w day of week (0..6); 0 represents Sunday[/code:1:84278a1014]Weet je het zeker?
  • Verdere bemoeizucht. Een tijdje terug heb ik ontdekt ('t staat ergens op dit forum) dat één gebruiker meerdere users kan 'veroorzaken'. (Dat heeft wellicht te maken met de virtuele consoles o.i.d. die je gebruikt. Als je grafisch werkt en vervolgens een console opentrekt veroorzaak je een tweede user. Wie kan dit beter uitleggen?) Weet je zeker dat de opdracht niet behelst dat je die (soms wel zesvoudige) vermeldingen van één en dezelfde gebruiker er niet moet terugbrengen tot één gebruiker? Als dat zo is: veel succes!
  • Om het probleem dat PeBo schets te ondervangen moet je dus gaan testen hoe gebruikers zijn ingelogd en evt. de dochter processen moet gaan elimineren wat hij dus bedoelt is volgende: in X inglogd en enkele xterms open geeft bijv. [code:1:c64bdd10be] /home/walter> who -lH GEBRUIKER REGEL LOGIN-TIJD UIT root tty1 May 18 15:36 walter :0 May 18 13:41 (console) walter pts/0 May 18 13:42 walter pts/1 May 18 15:26 root pts/2 May 18 15:40 (oceaan.waterland) [/code:1:c64bdd10be] console :0 en pts/0 zijn processen die het inloggen onder X met zich meebrengen het zou dus zaak moeten zijn dat je die processen eruit filterd die een dubbele login suggereren :D wat weer meebrengt dat je ook een externe sessie er weer juist niet uit mag gooien ;) Dus idd je kunt het zo moelijk maken als je wilt man who kan je wat verder brengen maar dan moet je UID gaan checken en de console waarop in gelogd is dus succes :D
  • Ik zit met een nieuw probleem. Ik wil een programma'tje schrijven dat de lancering van de Shuttle nabootst. Op het scherm verschijnt dan met tussenpozen van 5 seconden : 5 4 3 2 1 Take off Hier is mijn code die niet werkt: teller=5 while test ! $teller -eq 0 do echo -n "$teller" sleep 5 teller=`expr $teller -1` done echo Take off Ik zie de fout niet direct zitten. Iemand? Ik krijg als foutmelding : 5expr: syntax error ./shuttle: line 2: test: !: integer expression expected Take off
  • Ik ben nog steeds geen held in bash-scripts, maar als je regel 2 vervangt door iets van : [code:1:2354284718] while $teller != 0 [/code:1:2354284718] Ideetje?
  • [quote:3499d054bb="rackiman"]Ik zit met een nieuw probleem. Ik wil een programma'tje schrijven dat de lancering van de Shuttle nabootst. Op het scherm verschijnt dan met tussenpozen van 5 seconden : 5 4 3 2 1 Take off Hier is mijn code die niet werkt: teller=5 while test ! $teller -eq 0 do echo -n "$teller" sleep 5 teller=`expr $teller -1` done echo Take off Ik zie de fout niet direct zitten. Iemand? Ik krijg als foutmelding : 5expr: syntax error ./shuttle: line 2: test: !: integer expression expected Take off[/quote:3499d054bb] probeer eens export teller=5 ipv. teller=5
  • Eigenlijk vind ik dat rakiman best wel eens 'terugkoppeling' zou mogen geven op de hints van wstolk en van mij voordat we verder gaan ... of ben ik nu een erge zeur?
  • Tja, het is een simpel scriptje, dus probeer zelf eens je voorstellen ;) Max
  • [quote:4a222aee47="maximilaan"]Tja, het is een simpel scriptje, dus probeer zelf eens je voorstellen ;) Max[/quote:4a222aee47] Max probleem is dat ik er ook mee aan het stoeien gewest ben en er dus niet uitkom. Als een ander het wel kan ondervangen is het toch leuk om dat te horen ?? Daarbij komt dat er steeds veschillende dingen worden geopperd en dan is het weer geinig welke de beste optie is en of rakiman het nu wel werkend heeft gekregen.
  • Yep dat is zo!! Ben ook benieuwd hoe de leraar de proggies vindt ;) Max
  • Neen het wil nog steeds niet lukken. Heb de vorige dagen exames gehad van andere vakken en niet de tij gehad dit eerder te bekijken
  • Nou goed, nog één keer. Probeer het eens met:[code:1:d860e93e3b](...) while [[ "$teller" -ne "0" ]] (...) teller=`expr $teller - 1` (...)[/code:1:d860e93e3b]Of de eerste test echt zo moet, weet ik eigenlijk niet, maar in de Guide die ik eerder genoemd heb, staat vast tot in detail uitgelegd wat de (on)zin van die test-syntax is. Maar laat je het forum nu wel even weten of je hiermee uit de voeten kon ...?
  • Nope Die code doet het het ook niet ik blijf verder klungelen..... ik moet en zal het vinden...en zal het dan posten als ik het ooit vind :oops:
  • Je hebt toch wel alleen die twee regels die ik noemde veranderd? (...) betekent bij mij namelijk: weggelaten, niet interessant genoeg.
  • ja zo had ik het geinterpreteerd. ook al geprobeerd: (....) while test $teller -gt 0 (.....) de fout zit dus duidelijk in regel 2 , maar ik vind em niet :roll:

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.