[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Not missing, but very hard to see (was Re: Backslash missing in brac
From: |
Eli Schwartz |
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 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.0 |
On 12/12/19 9:57 PM, L A Walsh wrote:
>
>
> On 2019/12/12 13:01, Ilkka Virta wrote:
>> On 12.12. 21:43, L A Walsh wrote:
>>
>>> On 2019/12/06 14:14, Chet Ramey wrote:
>>>
>>> Seems very hard to print out that backquote though. Closest I got
>>> was bash converting it to "''":
>>>
>>
>> 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.
>>
> -----
>
> I'm sorry, but you are mistaken.
How so?
> The characters from 'Z' (0x5A) through 'z' (0x61) are:
>
> 0x5A 0x5B 0x5C 0x5D 0x5E 0x5F 0x60 0x61
> Z [ \ ] ^ _ ` a
>
> the backslash comes between the two square brackets.
>
> Position [6] is the "Grave Accent" (or backquote).
>
> It is quoted properly.
But... that's exactly what was said.
> As for %q printing an empty string for 0x5C
>
> "%q" causes printf to output the corresponding argument in a
> format that can be reused as shell input.
>
> For that string to be empty would mean there is no character 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?
>>
>>>> read -r -a a< <(printf "%q " {Z..a})
>>>> my -p a
>>>>
>>> declare -a a=([0]="Z" [1]="\\[" [2]="''" [3]="\\]" [4]="\\^" [5]="_"
>>> [6]="\\\`" [7]="a")
>>>
>>
>>
>>
--
Eli Schwartz
Bug Wrangler and Trusted User
signature.asc
Description: OpenPGP digital signature
- Re: Backslash missing in brace expansion, (continued)
- Re: Backslash missing in brace expansion, Chet Ramey, 2019/12/06
- Re: Backslash missing in brace expansion, Eric Blake, 2019/12/06
- Re: Backslash missing in brace expansion, Ilkka Virta, 2019/12/06
- Re: Backslash missing in brace expansion, Chet Ramey, 2019/12/06
- Re: Backslash missing in brace expansion, Martin Schulte, 2019/12/08
- Re: Backslash missing in brace expansion, Andreas Kusalananda Kähäri, 2019/12/08
- Not missing, but very hard to see (was Re: Backslash missing in brace expansion), L A Walsh, 2019/12/12
- Re: Not missing, but very hard to see (was Re: Backslash missing in brace expansion), Greg Wooledge, 2019/12/12
- Re: Not missing, but very hard to see (was Re: Backslash missing in brace expansion), Ilkka Virta, 2019/12/12
- Re: Not missing, but very hard to see (was Re: Backslash missing in brace expansion), L A Walsh, 2019/12/12
- Re: Not missing, but very hard to see (was Re: Backslash missing in brace expansion),
Eli Schwartz <=
- unquoted expansion not working (was Re: Not missing, but very hard to see), L A Walsh, 2019/12/13
- Re: unquoted expansion not working (was Re: Not missing, but very hard to see), Greg Wooledge, 2019/12/13
- Re: unquoted expansion not working (was Re: Not missing, but very hard to see), L A Walsh, 2019/12/14
- Re: unquoted expansion not working (was Re: Not missing, but very hard to see), Eli Schwartz, 2019/12/15
- Re: unquoted expansion not working (was Re: Not missing, but very hard to see), Greg Wooledge, 2019/12/16
- Unicode range and enumeration support., L A Walsh, 2019/12/18
- Re: Unicode range and enumeration support., Greg Wooledge, 2019/12/18
- Re: Unicode range and enumeration support., Eli Schwartz, 2019/12/18
- Re: Unicode range and enumeration support., Greg Wooledge, 2019/12/18
- Re: Unicode range and enumeration support., Eli Schwartz, 2019/12/18