Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Jul 2021 11:36:33 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Michael Butler <imb@protected-networks.net>
Cc:        freebsd-current <freebsd-current@freebsd.org>
Subject:   Re: awk behaviour?
Message-ID:  <CANCZdfp1nTx0%2B4ZKWYOPN9WtBzDPHYRnzLL58=Ni7giwFQFmfw@mail.gmail.com>
In-Reply-To: <8e1a8e3c-b062-7749-ceab-e500c1ab758e@protected-networks.net>
References:  <8e1a8e3c-b062-7749-ceab-e500c1ab758e@protected-networks.net>

next in thread | previous in thread | raw e-mail | index | archive | help
--00000000000015fdb405c8326ed1
Content-Type: text/plain; charset="UTF-8"

On Wed, Jul 28, 2021 at 11:31 AM Michael Butler via freebsd-current <
freebsd-current@freebsd.org> wrote:

> I tripped over this while trying to build a local release ..
>
> imb@toshi:/home/imb> pkg --version | awk -F. '{print $$1 * 10000 + $$2 *
> 100 + $$3}'
> 10001
>
> imb@toshi:/home/imb> pkg --version
> 1.17.1
>
> Is this expected?
>

Why $$ instead of $? $ isn't expanded in '' expressions, so doubling isn't
necessary
unlike in make... With single quotes it works for me:

% pkg --version | awk -F. '{print $1 * 10000 + $2 * 100 + $3}'
11603
% pkg --version
1.16.3

In awk $$n is $($n), so $$ in this context would evaluate $1 to 1 and then
$1 to be 1. And then $2 to be 16
and then $17 to be 0 and then $3 to be 1 and then $1 to be 1 which leads to
10001.

Warner

--00000000000015fdb405c8326ed1--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfp1nTx0%2B4ZKWYOPN9WtBzDPHYRnzLL58=Ni7giwFQFmfw>