Re: awk behaviour?
- Reply: Warner Losh : "Re: awk behaviour?"
- Reply: Ed Maste : "Re: awk behaviour?"
- In reply to: Warner Losh : "Re: awk behaviour?"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 28 Jul 2021 19:12:22 UTC
On 7/28/21 1:36 PM, Warner Losh wrote:
> 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.
What prompted the question was my (obviously poor) attempt to debug and
resolve this failure when attempting to build a release for i386 on an
amd64 ..
make -C /usr/src/release obj
make -C /usr/src/release ftp cdrom memstick.img mini-memstick.img
mkdir -p dist
cd /usr/src/release/.. && make TARGET_ARCH=i386 TARGET=i386
distributeworld DISTDIR=/usr/obj/usr/src/i386.i386/release/dist
make[3]: "/usr/obj/usr/src/i386.i386/toolchain-metadata.mk" line 1:
Using cached toolchain metadata from build at
vm01.auburn.protected-networks.net on Wed Jul 28 18:01:01 UTC 2021
make[3]: "/usr/src/Makefile.inc1" line 1864: String comparison operator
must be either == or !=
make[3]: "/usr/src/Makefile.inc1" line 2073: String comparison operator
must be either == or !=
make[3]: Fatal errors encountered -- cannot continue
make[3]: stopped in /usr/src
*** Error code 1
Stop.
imb