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.
- 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.txt
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- 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.
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.
- 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