Path: csiph.com!xmission!news.snarked.org!news.linkpendium.com!news.linkpendium.com!panix!usenet.stanford.edu!not-for-mail From: Eli Schwartz Newsgroups: gnu.bash.bug Subject: Re: Not missing, but very hard to see (was Re: Backslash missing in brace expansion) Date: Thu, 12 Dec 2019 22:03:33 -0500 Lines: 124 Approved: bug-bash@gnu.org Message-ID: References: <20191205201157.cd481936f76d95bbdfabc73c@schrader-schulte.de> <662e2328-f331-c554-afcf-fd3819f6beab@case.edu> <20191206055304.076d6115afa3a4f2a6a21c34@schrader-schulte.de> <5b5064a8-7175-42e7-1eb5-6374dee6c11e@redhat.com> <21761e28-c496-ff67-d7b7-628c9325085f@iki.fi> <9dd3a388-39b1-c059-de99-813f1e411764@case.edu> <5DF2987E.5000309@tlinx.org> <568aeaaa-22b3-c7b9-0e18-a92bef6d2ffb@iki.fi> <5DF2FE31.9070406@tlinx.org> <0ff3a920-94c2-b0c9-5631-0964955657aa@archlinux.org> NNTP-Posting-Host: lists.gnu.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="BU2brVJBXyQ4x42oyhlJEcEoLzLjCAKCK" X-Trace: usenet.stanford.edu 1576206236 13208 209.51.188.17 (13 Dec 2019 03:03:56 GMT) X-Complaints-To: action@cs.stanford.edu To: bug-bash@gnu.org Envelope-to: bug-bash@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1576206218; bh=WLXUmfEZcCG8m4/PRkE6OFBUAlf6O3OjHMULao4ZoXc=; h=Subject:To:References:From:Date:In-Reply-To; b=fOI2NUpDdoR/4Mr6NFheolwTIg7pepeuyjiIDs82m1vSCxmW8t4vg6uSW6hi6SAfy 32w80wi5O5Xe6Dup8PST+KU88h7qAJ3YKVVqFIrdyLVzTFTxlH0kGopHN7v507G7Se AaBCuw6yGmdZ0X5urhbl35or5PWNpeeem7JJuKcUU6VTpRfVdoT+L2mowlTuC+jiFi DJhiAkPLiqboGqL+KCb2S91Y88TKo86xI9kfPfBCmqYA2sEzMksNz5MMeektSHDHro lxwMo/qAPhPBn8IGEvZR26AZHJy5N+rMBfg8doGR88Hi+e/E1dMe0vjst7z22UupFS jjbQ4zAHu3JqF0jiqhrCGaM7U96//8jJACB8wP6r6OrR4O+kzz2aVsWTgq6U7QURkq UInvJY1ZaYNmvFf4yHb2KZyfbLxXGoNE4ZxIbIYGpo2FCUfM9nWlI2Ag6ENrNjjY9z FE07ytKPmso+EfSxA3Y7+5TLFQjGfQhHGnMkcAe4DB+tkfyeh4RFpRd8hW0B4S8l9J 85OCrgKrXyf09F1fc14kDzIsoTk7WY0N/+g6T7mL/QMmQIh0M7NIZX5nu0IXzTncRW mk3veZqwFOISog0P30DRmhJBi8IPFDTVPe5APesG1gF3/IHXrwarr7bwST3MYtIj/2 XK/8RGNju6CwiIukI421uyCI= X-Clacks-Overhead: GNU Terry Pratchett User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.0 In-Reply-To: <5DF2FE31.9070406@tlinx.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a01:4f8:160:6087::1 X-BeenThere: bug-bash@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports for the GNU Bourne Again SHell List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <0ff3a920-94c2-b0c9-5631-0964955657aa@archlinux.org> X-Mailman-Original-References: <20191205201157.cd481936f76d95bbdfabc73c@schrader-schulte.de> <662e2328-f331-c554-afcf-fd3819f6beab@case.edu> <20191206055304.076d6115afa3a4f2a6a21c34@schrader-schulte.de> <5b5064a8-7175-42e7-1eb5-6374dee6c11e@redhat.com> <21761e28-c496-ff67-d7b7-628c9325085f@iki.fi> <9dd3a388-39b1-c059-de99-813f1e411764@case.edu> <5DF2987E.5000309@tlinx.org> <568aeaaa-22b3-c7b9-0e18-a92bef6d2ffb@iki.fi> <5DF2FE31.9070406@tlinx.org> Xref: csiph.com gnu.bash.bug:15725 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --BU2brVJBXyQ4x42oyhlJEcEoLzLjCAKCK Content-Type: multipart/mixed; boundary="TSIB0N65hhMvEGdP8clG2d5iW9kgeIFhI" --TSIB0N65hhMvEGdP8clG2d5iW9kgeIFhI Content-Type: text/plain; charset=utf-8 Content-Language: en-US-large Content-Transfer-Encoding: quoted-printable On 12/12/19 9:57 PM, L A Walsh wrote: >=20 >=20 > On 2019/12/12 13:01, Ilkka Virta wrote: >> On 12.12. 21:43, L A Walsh wrote: >> =C2=A0 >>> On 2019/12/06 14:14, Chet Ramey wrote: >>> >>> Seems very hard to print out that backquote though.=C2=A0 Closest I g= ot >>> was bash converting it to "''": >>> =C2=A0=C2=A0=C2=A0=20 >> >> The backquote is in [6], and the backslash disappears, you just get >> the pair of quotes in [2] because that's how printf %q outputs an >> empty string. >> =C2=A0=20 > ----- >=20 > =C2=A0=C2=A0 I'm sorry, but you are mistaken. How so? > =C2=A0=C2=A0 The characters from 'Z' (0x5A) through 'z' (0x61) are: >=20 > 0x5A 0x5B 0x5C 0x5D 0x5E 0x5F 0x60 0x61 > Z=C2=A0=C2=A0=C2=A0 [=C2=A0=C2=A0=C2=A0 \=C2=A0=C2=A0=C2=A0 ]=C2=A0=C2=A0= =C2=A0=C2=A0 ^=C2=A0=C2=A0 _=C2=A0=C2=A0=C2=A0=C2=A0 `=C2=A0=C2=A0=C2=A0 = a >=20 > the backslash comes between the two square brackets. >=20 > Position [6] is the "Grave Accent" (or backquote). >=20 > It is quoted properly. But... that's exactly what was said. > As for %q printing an empty string for 0x5C >=20 > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "%q" causes=C2=A0 printf to = output the corresponding argument in a > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 format that can be reused as= shell input. >=20 > =C2=A0=C2=A0 For that string to be empty would mean there is no charact= er at hex > value 0x5C (unicode U+005C), which isn't so. But there isn't. An empty string was passed as an argument to printf, because the backslash was *converted* via escaping, into an empty string, *before* it was passed on the command line as an argv element to the printf builtin. Do you think that because printf is a builtin, and you didn't use /bin/printf, that somehow means it is exempt from the usual rule of how shells work, and gets to see its own argv before the parser reinterprets = it? >> =C2=A0 >>>> =C2=A0read -r -a a< <(printf "%q " {Z..a}) >>>> =C2=A0my -p a >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20 >>> declare -a a=3D([0]=3D"Z" [1]=3D"\\[" [2]=3D"''" [3]=3D"\\]" [4]=3D"\= \^" [5]=3D"_" >>> [6]=3D"\\\`" [7]=3D"a") >>> =C2=A0=C2=A0=C2=A0=20 >> >> >> =C2=A0=20 --=20 Eli Schwartz Bug Wrangler and Trusted User --TSIB0N65hhMvEGdP8clG2d5iW9kgeIFhI-- --BU2brVJBXyQ4x42oyhlJEcEoLzLjCAKCK Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEvSewel70XCra9w4EhIGKaBmvSpsFAl3y/4YACgkQhIGKaBmv Spt7/xAAw4e49gCSqoar/isu2j3csc1a5xwW1s/tJubhSXGvh9OgZVqTw9etGPYX qP6XOVcVgen+zNYwvYH2UqtR6tGqhUoeWbTbZ9zIYN5jFV3qeHhsIAdbWh5oe4RQ xkZRXjn1Ddaww8k4aS2cGKx+uy7MTNg3R54OXZTbz/DIA9xjyJGuvrqt7aL+V93Q eVzX6T72jdq5pkZ6fukBvvDCnX3mg1bYbbvponqAndsKIcI/i+Emoam6Zhol0xcG Dfd/V7L53Uw4K6CwoBQIBehARJMUCvTtQ+cghwZm7SWHGB8JDmRoFERY4aF5iekU QziF4D24MvRNj+rLlpwCTBr2OnK9c+W19QNYZlHU5dda0NP5XdVQyD/wlb1X9J4h 4xdjkvMC0qiSJXt5SUDKNSL7wch6ylQz/cBknr36a9R03bAN3LnA4kLmz7e0IQY5 +ZQIZcB+9yRArfRfjSvUX3DMx8H697xIXU40wRms/iv0I/6OtlBf5+IEUDdxJjWi BnFp2BGH9buGO+2TuRX232PWhBPBZlq15wB3+/KCRimOTkURx39OClMMy2Pw7PLw XSUTdVSbZIYHZLaZ7dk0H9NNC9gIFHZEs6mXFI8xEPQf+gOMNdgpTHyhV/v3MqnE rOpKKRidZB7xxzm560gnKEJsXZ7UeEI5HUB4zkeuNpEukXju6T6JAjMEAQEKAB0W IQRgQRMEwJ02YoNA7v/OsWfvtXIr1gUCXfL/hgAKCRDOsWfvtXIr1lb2EACe4t4J IO0tPpeG5DNTQmNuBSPCKbt6e0HcRak+NlEfKN4rSb+OMZ4h+SUcemSOysi3fmlt vJXLaP2f/VJS5rTEyRVO2O+KF6v0/7itIvp0bLaLaJIIBJaxvW2MTCtuknyxzIeE VzH30ld06GmBmgH3dpKYlBS3gCLcWSaHApuqmpMhHlk4PXFsgkgRe0GGUqDfLish /qIjrUKFGZVusLTIpUyZ1K8gEypVzUkH31BRnwnC5iMfuYhPVgrw0kzkzXWK/G1E V23J1w/vTPIaAav9WiATvn7XTLlB3ftveMGgnMr9Lx14cVY5kVJRSB3SO/Pup7q2 kCLUze/fGVFNj+fcGCRAsyTfqQeKE+mUudFj+2l8IPq8OyEgJNynOg2OqwgnEQrD j/WV3VfEFYvwgOLIQnLmSwSHfhPnKYvqtxN48n/oAdCu/ViQwAzrXD6EX9+MKWnp p1li431hSsSVxVMlZpoMKcBA/2hslm8ijO+nfVp+27JHY2jNZ3LrKxLWBp8cfkiW Hrw9bQllc0DXByaPzP6zfjgIL0fRi86MV/+Ykag+/gsWDgLs8UfUsp8UMctFP88m +2AtBWGUDH2H5ohC0ihn3k/F/C9jUcTiIsH/tAEV9uzcJCssbKWd5LkSg0H2Z58b BGBdE/8CQtuBh+R0e9HIQ6twR1AyrOeoPXl+DQ== =pYSv -----END PGP SIGNATURE----- --BU2brVJBXyQ4x42oyhlJEcEoLzLjCAKCK--