anoniem Geplaatst: 28 november 2002 Delen Geplaatst: 28 november 2002 [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? Quote Link naar reactie
anoniem Geplaatst: 28 november 2002 Auteur Delen Geplaatst: 28 november 2002 Kan je misschien eerst uitleggen wat dat programmaatje volgens jou zou moeten doen? :wink: Quote Link naar reactie
anoniem Geplaatst: 28 november 2002 Auteur Delen Geplaatst: 28 november 2002 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. Quote Link naar reactie
anoniem Geplaatst: 28 november 2002 Auteur Delen Geplaatst: 28 november 2002 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. Quote Link naar reactie
anoniem Geplaatst: 28 november 2002 Auteur Delen Geplaatst: 28 november 2002 [code:1:762f6c4d61] sed 's/^/hallo: /' <$1 >$2 [/code:1:762f6c4d61] Aanroepen met ./scriptnaam file1 file2 waarbij file1 alle namen bevat (jan piet etc) en file 2 het resultaat zal bevatten. $1 is het eerste argument op de command line, $2 het tweede ($0 overigens het script zelf) Quote Link naar reactie
anoniem Geplaatst: 28 november 2002 Auteur Delen Geplaatst: 28 november 2002 maar de grap is dat ik juist wil dat de beide datastromen nooit ergens op de schijf komen, maar worden uitgewisseld door pipes. Quote Link naar reactie
anoniem Geplaatst: 28 november 2002 Auteur Delen Geplaatst: 28 november 2002 Volgens mij kan dat niet in bash. Tenzij je op een of andere manier een manier vind om de functie pipe(2) in bash uit te voeren. Quote Link naar reactie
anoniem Geplaatst: 28 november 2002 Auteur Delen Geplaatst: 28 november 2002 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. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen