Unexepcted behavior from read and cat

Mario Lobo mario.lobo at ipad.com.br
Mon May 12 19:10:20 UTC 2008


On Monday 12 May 2008, Paul Schmehl wrote:
> I created a small list of IPs that I wanted to do digs on (because I'm lazy
> and don't want to do them one at a time.)
>
> I then wrote the following on the commandline:
>
> % dig +short -x `cat iplist`
>
> The results was an answer for the first line only.
>
> So, I thought read line would do the trick.  I tried this:
>
> % dig +short -x `(read line; echo $line; while read line; do echo $line;
> done) < iplist`
>
> Same result.
>
> I even tried:
>
> % dig +short -s `cat iplist | awk '{print $1}'`
>
> Same result.  (Yes, I know, why do twice the work to get the same answer,
> but I was desperate.)
>
> WTF?  Why do these utilities, which usually read all the lines in a file
> now only work once when run through dig?  Is there a way to feed dig a list
> of IPs and have it return each and every one of them?
>
> I tried dig +short -x -f iplist, but that returns nothing at all.
>
> Sure, I can edit the file and prepend +short -x to each line, but by then I
> might as well just do them individually.
>
> What am I missing?

Why not:

for ips in `cat iplist`
do
     dig +short -x $ips
done

-- 
Mario Lobo
Segurança de Redes - Desenvolvimento e Análise
IPAD - Instituto de Pesquisa e Apoio ao Desenvolvimento Tecnológico e 
Científico




More information about the freebsd-questions mailing list