Bemenetre átirányítás és argumentumok fájlból húzása egyszerre

Lehetséges egyszerre egy program stdin-jére ráküldeni egy fájlt és egy másikból felszívni az argumentumokat?

cat tostdin.txt | program < toargs.txt

Ez nekem nem nagyon akar működni; az argc-ben 1 van.

Hozzászólások

Persze, hogy 1 van, hiszen az argumentum magának a programnak a neve, helyesebben az a string, ahogyan hívtad. Egyébként miért ne lehetne egyfelől az stdin-ről, másfelől az argumentumból, mint file-ból olvasni? Helyesen:

cat tostdin.txt | program toargs.txt

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

Persze, hogy 1 van, hiszen az argumentum magának a programnak a neve, helyesebben az a string, ahogyan hívtad.

Ezt én is tudom. Erről beszélek, hogy zéró paramétert kapott meg.

cat tostdin.txt | program toargs.txt

Így az argc-ban 2 lesz, az argv[1] pedig azt fogja tartalmazni, hogy 'toargs.txt'. Én nem ezt szeretném.
Amit én szeretnék, hogy a toargs.txt tartalma legyen átadva argumentumként, egy sor egy argumentum. (Vagy akár egy szó egy argumentum, az is jó.)

Tehát toargs.txt tartalma:

arg1
arg2
arg3
arg4

És én ezt szeretném úgy átadni neki fájlból, mintha argumentumként lennének átadva:

cat tostdin.txt | program arg1 arg2 arg3 arg4

Na most, ha csak annyit csinálok, hogy

program < toargs.txt

akkor még működik is (bár egy argumentumként átadva), de ha a bemenetre is irányítok valamit, akkor nem.

Csak tipp, mert nem biztos, hogy értem, amit akarsz:

cat tostdin.txt | program `cat toargs.txt`

vagy "korszerűbben"

cat tostdin.txt | program $(cat toargs.txt)

amit Zs kollega irt, plusz

cat tostdin.txt | xargs -a toargs.txt program

vagy

xargs -a toargs.txt program < tostdin.txt