On Wed, Mar 9, 2022 at 12:47 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > > On Tue, Mar 8, 2022 at 6:58 PM Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: > >> > On Tue, Mar 8, 2022 at 6:44 PM Carlo Marcelo Arenas Belón > >> > <carenas@xxxxxxxxx> wrote: > >> > > + local _GLIBC_VERSION=$(getconf GNU_LIBC_VERSION 2>/dev/null) > >> > > + if echo "$_GLIBC_VERSION" | cut -d. -f1-2 | > >> > > + awk '{ if ($2 - 2.34 < 0) exit 1 }' > > > > This seems to work, though it's getting a bit verbose: > > > > awk '/^glibc / { split($2,v,"."); if (sprintf("%s.%s", v[1], v[2]) > > - 2.34 < 0) exit 1 }' > > If we are losing "cut" (which I think is a good thing to do), we > probably can lose the pipe, too and refer to $_GLIBC_VERSION as an > element in ARGV[] and make the command used as "if" condition to a > single "awk" script? Erm, something like this perhaps? awk 'BEGIN { split(ARGV[1], v, "[ .]"); if (v[1]=="glibc" && sprintf("%s.%s", v[2], v[3]) - 2.34 < 0) exit 1 }' > In general it is a good discipline to question a pipeline that > preprocesses input fed to a script written in a language with full > programming power like awk and perl (and to lessor extent, sed) to > see if we can come up with a simpler solution without pipeline > helping to solve what these languages are invented to solve, and I > very much appreciate your exploration ;-) Yup, although in this case, the pure-awk solution may not convey the intent as easily as the original posted by Carlo which had the benefit of being perhaps easier to digest.