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.txtEz nekem nem nagyon akar működni; az argc-ben 1 van.- 120 megtekintés
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.txttr '[:lower:]' '[:upper:]' <<<locsemegeLOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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.
Így azcat tostdin.txt | program toargs.txt
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 arg4Na most, ha csak annyit csinálok, hogyprogram < toargs.txtakkor még működik is (bár egy argumentumként átadva), de ha a bemenetre is irányítok valamit, akkor nem.- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
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.- A hozzászóláshoz be kell jelentkezni
amit Zs kollega irt, plusz
cat tostdin.txt | xargs -a toargs.txt program
vagy
xargs -a toargs.txt program < tostdin.txt- A hozzászóláshoz be kell jelentkezni