[megoldva] Szkripten belüli kimenet-átirányítás

Azt szeretném, ha egy php szkriptem "önmagában" indítható lenne, és a kimenet helyét is elegánsan (valahogy ott a shebang részen) megadhatnám. Tehát nem akarok fwrite-ot használni, hanem valamilyen stdout-átirányítást.

A szkript eleje ilyen:
#!/usr/bin/php
<?php
...

A fájl futtatható, tehát egy ./szkriptem.php paranccsal elindul. Azt szeretném, ha a kimenetet (pl. az első sorban valahogy megadva) kedvemre irányíthatnám. Sajnos, ha a fájl elejére írok egy > /tmp/ide-t, akkor ezt kapom: "Could not open input file: > /tmp/ide"

Egy olyan kerülőút persze van, hogy írok egy másik szkriptet, amiben meg tudom hívni: ./szkriptem.php > idemenj, de ezt nem szeretném, hanem egy önmagában "jól dokumentált", beszédes fájlra vágyom. Nem szeretném a php -r '...'>ide megoldást sem használni.

Hozzászólások

fclose(STDOUT);
$STDOUT = fopen('out.log', 'w');

Sziasztok,

Tudnátok segíteni, hogy hogyan tudnám átirányítani az ls kimenetét a pdftk programnak?

Ezeket próbáltam eddig:

pdftk <1 ls *.pdf output out.pdf
bash: 1: No such file or directory

pdftk <&1 ls *.pdf output out.pdf
Error: Failed to open PDF file:
ls
Errors encountered. No output created.
Done. Input errors, so no output created.

pdftk
bash: ls: No such file or directory

pdftk <$(ls *.pdf) output out.pdf
bash: $(ls *.pdf): ambiguous redirect

-- Zoli

Azt nem sikerült megértened, hogy amikor az ls után használsz shell globot, akkor az ls kimenete éppen az lesz, amit a glob kifejtése után a shell átad neki. Te ezt a kimenetet helyettesítetted a backtick által a paraméterek helyére, de ez éppen ugyanaz, mintha a parancsod paraméterei helyére közvetlenül a shell fejtené ki az odaírt globot. Mi a fenének hívtad meg az ls-t? Amúgy, hogy bosszantsalak, hívhattad volna akár az echo-t is ugyanígy, az is éppen ennyire fölösleges volna.

pdftk szghalok_tartalomjegyzek.pdf `echo *fejezet.pdf` szghalok_targymutato.pdf output tanenbaum_szamitogep.halozatok.pdf

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE