Quando ocorrem as expansões em citações ANSI-C e em traduções específicas de localidade?

0

Do manual do bash

Words of the form $'string' are treated specially. The word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard

A double-quoted string preceded by a dollar sign (‘$’) will cause the string to be translated according to the current locale. If the current locale is C or POSIX, the dollar sign is ignored. If the string is translated and replaced, the replacement is double-quoted.

Eu me pergunto quando os tipos de expansões acontecem?

Eu acho que eles devem acontecer após a análise. Se isso estiver correto, quando eles ocorrerão com relação às expansões de shell, como expansão de chaves, expansão de parâmetros e expansão de nomes de arquivos?

Obrigado.

    
por Tim 21.05.2018 / 22:44

1 resposta

0

$'...' funciona como qualquer outra citação, exceto que apenas oferece maneiras alternativas de apresentar alguns caracteres.

Estes dois imprimem {foo,bar} :

echo $'\x7b'foo,bar}
echo "{"foo,bar}

... enquanto isso aciona a expansão de cinta e imprime foo bar :

echo {foo,bar}

Em foo=abc , imprima $foo :

echo $'\x24'foo
echo "$"foo

... enquanto isso expande a variável e imprime abc :

echo $foo

Se houver um arquivo chamado abc.txt , imprima abc.txt :

echo "a"*.txt
echo $'\x61'*.txt

Eu só posso supor que o mesmo é verdade para $".." .

    
por 21.05.2018 / 23:08

Tags