Ga naar inhoud

[bash programmeren] waarom werkt dit niet?


anoniem

Aanbevolen berichten

[size=15:bb47092e82]Waarom werkt dit niet? :[/size:bb47092e82] $ [color=darkred:bb47092e82]sed -e 's/^/hallo: /' <&4 >&5 &[/color:bb47092e82] $ [color=darkred:bb47092e82]echo wilbert >&4[/color:bb47092e82] $ [color=darkred:bb47092e82]read p <&5[/color:bb47092e82] $ [color=darkred:bb47092e82]echo $p[/color:bb47092e82] hallo: wilbert $ in plaats daarvan klaagt bash dat 4 en 5 bad descriptors zijn. Hoe moet ik die dan van te voren openen?
Link naar reactie
een subproces (sed) starten, dat elke regel input die het krijgt weer uitvoert, met de tekst "hallo: " ervoor ('t is maar een voorbeeld). Daarna een regel naar de input van het proces schrijven, en vervolgens de output van het proces terug lezen. Meer algemeen is eigenlijk de vraag, hoe open ik een coproces waarvan ik input en output allebei kan connecten naar een filedescriptor in het script. En hoe open ik die files.
Link naar reactie
kijk zo werkt het wel: [color=darkred:40ad2f5a17]mkfifo a b sed 's/^/hallo: /' < a > b & exec 4>a 5<b echo wilbert >&4 read p <&5 echo $p[/color:40ad2f5a17] hallo: wilbert maar ik wil per se niet met named pipes (fifo's) werken, want die zijn traceerbaar in het filesystem, en ik wil niet dat andere processen eventueel in die fifo's schrijven oid. Met proces subsitution kan je alleen maar OF output OF input connecten, en ik wil ze allebei. Wie weet dé oplossing? EDIT: Dit werkt ook niet goed, doordat sed buffert. Maar 'tis maar een voorbeeld.
Link naar reactie
Process substutition komt er dicht bij. Dit opent virtuele files in /dev/fd/ die alleen zichtbaar zijn voor de beide communicerende processen (en hun kinderen als je niet uitkijkt). Zie [url=http://gathering.tweakers.net/forum/list_messages/656392]dit topic op GoT/NOS[/url] Ik denk dat we het daar dan maar mee moeten doen. Ik wil juist in bash + sed + awk programmeren. Perl of Python of C kunnen altijd nog.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...