[ _owl_ @ 19.03.2002. 16:19 ] @
Dakle, trebala bi mi skriptica koja bi listala sadrzaj nekog direktorijuma i pozivala neki programcic kojem bi kao parametar prenosila fajlove iz tog direktorijuma. Ako je nekom nejasno evo primera sta bi to trebalo da radi:

ls /tmp
001s 003s 005s upload
002s 004s test

programce bi ovako trebalo da se pozove za svaki fajl
program $fajl (program 001s, program 003, program 005s, program upload ... )

Ja sam pokusao nesto kao
ls -1 | program
ali to ne radi
[ random @ 19.03.2002. 20:41 ] @
ls | xargs program
[ _owl_ @ 20.03.2002. 00:04 ] @
Pojasnjenje

--- test.sh ---
#1/bin/sh
echo $1
--- end ---
ls -1 | xargs test.sh -- izbacuje samo prvu liniju zato sto ja ispisujem samo prvi prosledjeni argument
ls -1 | xargs -t test.sh -- test.sh pa onda navedeni svi fajlovi iz tog direktorijuma
Meni treba da se za svaki fajl pozove program sa imenom fajla kao jedinim parametrom (ako ima 50 fajlova program se poziva 50 puta a ne da se svi fajlovi iz direktorijuma proslede kao parametri programu).



[ random @ 20.03.2002. 16:55 ] @
Pa nemam pojma... Možda nešto ovako (mada valjda može i elegantnije):

Code:

#!/bin/sh
# shift_skripta.sh
while [ $# -ne 0 ]; do
   program $1
   shift
done


i onda

$ ls | xargs shift_skripta.sh

(Napomena: Kada izlaz komande ls pajpuješ ili redirektuješ, ne moraš da navodiš parametar -1. Probaj ls > ls.out; cat ls.out pa ćeš videti).

Alternativna varijanta je da i ls komandu ubaciš u skript, elem, ima milion načina, verujem da ćeš se snaći.
[ random @ 20.03.2002. 17:07 ] @
Mada kad sad malo bolje razmislim, to što tebi treba možda može da se jednom rečju kaže ovako:

Code:

for fajl in `ls` ; do program $fajl; done
[ leka @ 26.03.2002. 00:31 ] @
evo nesto smuckano na brzaka
Code:

ls | awk '{print "cat " $1}' | sh


Umesto cat stavi komandu koja zelis da ti se izvrsi...
[ random @ 29.03.2002. 15:28 ] @
Ha, kako zanimljiv pristup.
[ leka @ 01.04.2002. 11:36 ] @
Pa totalno UNIX pristup... Jedna od najmocnijih stvari UNIX-a je "pajp" :) i brzo kreiranje procesa... A ovaj moj primer koristi i jedno i drugo.