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:
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.txttartalma 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.
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:
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Ezt én is tudom. Erről beszélek, hogy zéró paramétert kapott meg.
Így az
argc
-ban 2 lesz, azargv[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:És én ezt szeretném úgy átadni neki fájlból, mintha argumentumként lennének átadva:
Na most, ha csak annyit csinálok, hogy
akkor még működik is (bár egy argumentumként átadva), de ha a bemenetre is irányítok valamit, akkor nem.
Oldschool Computer - http://oscomp.hu
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)
Igen, ezt szerettem volna elérni és ezt pont nem próbáltam meg, csak úgy, hogy
$(< toargs.txt)
, ami viszont egy stringként adta át az összes sort.Köszi a helpet.
Oldschool Computer - http://oscomp.hu
amit Zs kollega irt, plusz
vagy
Így is működik, köszi.
Oldschool Computer - http://oscomp.hu