It appears that busybox awk does not recognize \] in a character class,
interpreting the backslash literally and taking the ] as the end of the
character class:
% printf '%s\n' ']' '\]' | busybox awk '/^[\]]$/ { print; }'
\]
% printf '%s\n' ']' '\]' | gawk '/^[\]]$/ { print; }'
]
Busybox does accept []] as meaning "] is part of the character class",
but this syntax is not portable to heirloom (and presumably also Solaris
10) awk, which only works with [\]]. GNU awk accepts either form.
So instead, let's avoid this problematic construct entirely by writing
the test in a different way.
}
# Extract argument name
- if (work ~ /^\[=[^\] \t]+\]/) {
+ if (work ~ /^\[=[^ \t]+\]/ && sub(/\]/, "&", work) == 1) {
if (n = index(work, "]")) {
arg = substr(work, 3, n-3)
work = substr(work, n+1)