Bisher konnten numerische Konvertierungen entweder durch Hinzufügen von Null (+0), unärem Plus (+) oder unärem Minus (-) ausgelöst werden:
$ gawk --version
GNU Awk 4.1.4, API: 1.1 (GNU MPFR 3.1.6-p1, GNU MP 6.1.2)
$ gawk 'BEGIN {print "01" + 0}'
1
$ gawk 'BEGIN {print +"01"}'
1
$ gawk 'BEGIN {print -"01"}'
-1
Die Konvertierung erfolgt jetzt jedoch nur durch Hinzufügen von Null und unärem Minus:
$ gawk --version
GNU Awk 4.2.0, API: 2.0 (GNU MPFR 3.1.6-p1, GNU MP 6.1.2)
$ gawk 'BEGIN {print "01" + 0}'
1
$ gawk 'BEGIN {print +"01"}'
01
$ gawk 'BEGIN {print -"01"}'
-1
Weiß jemand, wo diese Änderung erwähnt wurde oder warum sie vorgenommen wurde?
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html
+
es sich um ein No-Op handelte und keine Konvertierung in numerische Werte verursachte (aus diesem Grund empfehle ich, es aus Gründen derx+0
Portabilität hier zu verwenden , auch wenn+ x
es gemäß POSIX funktionieren sollte). Ich habe es vor einiger Zeit bwk gemeldet. Es sieht so aus, als ob das neue Verhalten in Gawk nicht beabsichtigt ist. Ein Kommentar im Code sagt,// Force argument to be numeric
gefolgt von etwas, das es nicht tut. Vielleicht möchten Sie es melden.Antworten:
Dies ist sicherlich unbeabsichtigt. Wir (die Gawk- Betreuer) werden versuchen , das Problem zu beheben.
In Zukunft würde es VIEL helfen, wenn solche Fragen an die Gawk-Fehlerberichterstattungsadresse gesendet würden (
[email protected]
siehegawk --help
), damit die Entwickler mehr über diese Probleme erfahren und sie beheben könnten.quelle