Toon posts:

[Bash]Aantal commando's uitvoeren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

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:
  • 0 Henk 'm!

  • ripperke
  • Registratie: Augustus 2003
  • Laatst online: 19-08 16:06

ripperke

w00t!

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:
  • 0 Henk 'm!

  • CAPSLOCK2000
  • Registratie: Februari 2003
  • Laatst online: 02-10 22:42

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:
  • 0 Henk '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:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
Verwijderd 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:
  • 0 Henk 'm!

Verwijderd

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:
  • 0 Henk 'm!

  • riddles
  • Registratie: April 2000
  • Laatst online: 26-05 15:33
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