Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Jun 2000 00:53:07 +0100
From:      Mark Ovens <mark@ukug.uk.freebsd.org>
To:        questions@freebsd.org
Subject:   Is awk(1) broken?
Message-ID:  <20000602005307.B535@parish>

next in thread | raw e-mail | index | archive | help
A script I'm writing which reads the ports INDEX file using awk(1)
includes this line:

cat INDEX | awk  s=${cmd} 'BEGIN { FS = "|" } {if (index($1, s).....

But this gives the error:

awk: cmd. line:2: fatal: illegal name `BEGIN {FS ' in variable
assignment

If I use ``-v'' thus:

awk  -v s=${cmd} 'BEGIN { FS = "|" } {if (index($1, s).....

it works fine. The manpage says that ``-v'' is only for compatibility
with some earlier versions of awk(1) and causes the variable
assignment to take place before the BEGIN block is executed. If ``-v''
is omitted then the variable assignment will happen *after* the BEGIN
block has been executed.

Since the BEGIN block doesn't need ``s'' it should work without
``-v''.

There are 3 possibilities:

	1. I've misunderstood the manpage.

	2. The manpage is wrong, or ambiguous

	3. awk(1) is broken.

Anyone know which?

TIA.

-- 
        ...and on the eighth day God created UNIX
________________________________________________________________
      FreeBSD - The Power To Serve http://www.freebsd.org
      My Webpage http://ukug.uk.freebsd.org/~mark/
mailto:mark@ukug.uk.freebsd.org             http://www.radan.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000602005307.B535>