I have the following effect with this script:

$ cat /tmp/test.sh
#!/bin/sh

IP=192.168.0.1
echo "${IP//./\\.}"
echo "${IP//./\\.}"' '
echo "${IP//./\\.}"'['
echo "${IP//./\\.}["
echo "${IP//./\\\\.}["
# end

$ ash /tmp/test.sh
192\.168\.0\.1
192\.168\.0\.1
192.168.0.1[
192.168.0.1[
192\.168\.0\.1[
$ bash /tmp/test.sh
192\.168\.0\.1
192\.168\.0\.1
192\.168\.0\.1[
192\.168\.0\.1[
192\\.168\\.0\\.1[

The intent is to build a regular expression that has the dots quoted. It works when nothing follows the substitution (1. echo). It works when followed by a quoted space, or every other character I tried (2. echo). The quote doesn't appear when it is followed by an opening bracket, either in single quotes or in double quotes (3. echo and 4. echo). It seems that in this case extra backslashes are needed (5. echo). The substitution is performed, but the following bracket somehow causes an extra unquoting of the argument.
The results with bash are different.
BusyBox is v1.16.1.

Ralf
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to