Toon posts:

[Bash]Aantal commando's uitvoeren

Pagina: 1
Acties:

Acties:
  • 0Henk 'm!

Anoniem: 46521

Topicstarter
Ik ben bezig met het modelleren van het een en ander en daarvoor moet ik om de 5 minuten een paar dezelfde commando's in m'n shell intikken. Nu wil die commando's in een batchscript stoppen, dat scheelt steeds wat gedoe, vooral omdat de paths nogal lang zijn. Het wil me alleen niet lukken, meerdere dingen geprobeerd maar beheers het bash-scripten nog niet goed genoeg.

De eerste regel zorgt ervoor dat je in de omgeving van het programma madymo komt binnen de shell. Dat is nodig, omdat er enkele variablen beschikbaar moeten komen die door 'makeexec.sh' gebruikt worden om een nieuwe executable te compileren. Daarna wil ik weg uit deze environment en de nieuw gemaakte executable runnen.
Probleem is dat de commando's na 'madymo73 -sh' niet worden uitgevoerd. Heb ook geprobeerd handmatig de variabelen te definieren die beschikbaar komen door het 'madymo73 -sh' commando en het commando dan zelf weg te laten, maar op een of andere manier zijn die dan alsnog niet beschikbaar in makeexec.sh. Ook nog wat met de commando's source en exec geprobeerd, maar dat mocht niet baten.

code:
1
2
3
4
5
#!/bin/bash
madymo73 -sh 
echo `/path/makeexec.sh 3d usrep3.f`
echo `exit`
echo `madymo73 -3d -x /anderpath/madymo3d ../Vlak2.xml`

Acties:
  • 0Henk 'm!

  • ripperke
  • Registratie: Augustus 2003
  • Laatst online: 01:56
Ik zou eens kijken of je het kan automatiseren met expect

code:
1
2
3
4
autoexpect -f ~/woei.exp madymo73 -sh 
/path/makeexec.sh 3d usrep3.f 
exit
madymo73 -3d -x /anderpath/madymo3d ../Vlak2.xml


vervolgens zou je het allemaal automatisch kunnen laten gebeuren door
code:
1
expect ~/woei.exp

aan te roepen.

If TCP/IP handshaking was less formal, perhaps SYN/ACK would be YO/WASSUP


Acties:
  • 0Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 27-05 13:25

CAPSLOCK2000

zie teletekst pagina 888

Ik denk dat 'madymo73 -sh' een nieuwe shell opstart. De autoexpcect oplossing van ripperke klinkt interessant.
Kun je dat 'madymo73' nog andere argumenten meegeven? Ik gok dat het mogelijk is om iets te doen als:

madymo73 -sh "/path/makeexec.sh 3d usrep3.f "

This post is warranted for the full amount you paid me for it.


Acties:
  • 0Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

probeer madymo -sh eens in de shebang (#!) te zetten ipv bash. Met volledig pad uiteraard.

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


Acties:
  • 0Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 22-05 13:20
Anoniem: 46521 schreef op maandag 23 mei 2011 @ 16:27:
[...]
De eerste regel zorgt ervoor dat je in de omgeving van het programma madymo komt binnen de shell. Dat is nodig, omdat er enkele variablen beschikbaar moeten komen die door 'makeexec.sh' gebruikt worden om een nieuwe executable te compileren. Daarna wil ik weg uit deze environment en de nieuw gemaakte executable runnen.
Uit je beschrijving kan ik niet precies opmaken wat er gebeurt als je madymo73 -sh handmatig uitvoert. Dat is denk ik een van de volgende mogelijkheden.
  1. madymo73 -sh start zelf een interactieve shell en blijft wachten op de commando's die erin gegeven worden. In dat geval moet je de uit te voeren commando's "van buiten af" aan madymo73 -sh doorgeven, bijvoorbeeld zo:
    code:
    1
    
    echo /path/makeexec.sh 3d usrep3.f | madymo73 -sh

    De pipe-constructie zorgt ervoor dat de uitvoer van het echo-commando wordt aangeboden aan de standaard invoer van madymo73 -sh, waar deze normaliter invoer van het toetsenbord verwacht.
  2. er worden een aantal environment-variabelen in gezet (die vergeten worden zodra het script afgelopen is). Dat kan alleen als madymo73 zelf een bash-script is. In dat geval moet je madymo73 -sh uitvoeren in de context van de bestaande shell:
    code:
    1
    2
    3
    4
    5
    
    #!/bin/bash
    # Let op de punt en de spatie vooraan de volgende regel!
    . madymo73 -sh
    /path/makeexec.sh 3d usrep3.f
    madymo73 -3d -x /anderpath/madymo3d ../Vlak2.xml
  3. madymo73 genereert een aantal "export"-statements die in de context van de huidige shell uitgevoerd moeten worden om de juiste environment-variabelen te zetten. Dit is herkenbaar doordat madymo73 als je het handmatig uitvoert een aantal regels uitvoert die er als variabele-assignments uitzien:
    VAR1=waarde1
    export VAR1
    VAR2=waarde2
    export VAR2
    

    In dat geval moet je de uitvoer van madymo73 -sh uitvoeren met "eval" in de context van de huidige shell:
    Bash:
    1
    2
    3
    4
    
    #!/bin/bash
    eval $(madymo73 -sh)
    /path/makeexec.sh 3d usrep3.f
    madymo73 -3d -x /anderpath/madymo3d ../Vlak2.xml
HTH

Acties:
  • 0Henk 'm!

Anoniem: 46521

Topicstarter
Bedankt voor alle reacties, het is gelukt!

Nog even wat meer informatie:
- madymo73 is een link naar een executable, niet naar een script.
- Als ik handigmat madymo73 -sh invoer, krijg ik dit:
code:
1
2
3
4
x@x:/path> madymo73 -sh
Running /usr/bin/sh [pid = 9186]

x:/path>

- Ik kan niet vinden welke andere opties/argumenten ik madymo73 kan meegeven. De help somt die helaas niet op.

@ripperke: de 'expect' optie heb ik nog niet geprobeerd, dat moet ik nog even uitzoeken. Het 'expect' commando herkent hij namelijk niet meteen, dus neem aan dat ik nog een package moet downloaden ofzo.

@CyBeR: in de shebang zetten werkte niet.

@sam.vimes. Bedankt voor de uitgebreide reactie, daar heb ik zeker het een en ander van geleerd. Optie 1 werkte. Het ziet er nu als volgt uit:
code:
1
2
3
#!/bin/bash
echo /path/makeexec.sh 3d usrep3.f | madymo73 -sh
madymo73 -3d -x path/madymo3d ../Vlak2.xml


Eenvoudig als je weet hoe het werkt, maar die dingen vind ik vaak toch lastig te vinden met google. Toch moeilijk zoeken op een "|" om meer info te krijgen.

Acties:
  • 0Henk 'm!

  • riddles
  • Registratie: April 2000
  • Laatst online: 14-03 17:30
Bedoel je niet:
code:
1
2
3
4
5
6
#!/bin/bash
madymo73 -sh <<EOF
/path/makeexec.sh 3d usrep3.f
exit
EOF
madymo73 -3d -x /anderpath/madymo3d ../Vlak2.xml
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee