|
From: | L A Walsh |
Subject: | Re: Not missing, but very hard to see (was Re: Backslash missing in brace expansion) |
Date: | Thu, 12 Dec 2019 18:57:53 -0800 |
User-agent: | Thunderbird |
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. 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. 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.
declare -a a=([0]="Z" [1]="\\[" [2]="''" [3]="\\]" [4]="\\^" [5]="_" [6]="\\\`" [7]="a")read -r -a a< <(printf "%q " {Z..a}) my -p a
[Prev in Thread] | Current Thread | [Next in Thread] |