0

This question already has an answer here:

From https://unix.stackexchange.com/a/378549/674

tmp=${string//"$separator"/$'\2'} 

What does $ in $'\2' mean?

Is $'\2' a parameter expansion?

Thanks.

marked as duplicate by Stephen Kitt, Jeff Schaller, Stephen Rauch, GAD3R, Dmitry Grigoryev Aug 1 '17 at 14:44

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

3

This is ANSI-C Quoting:

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.

$'\2' is expanded to the eight-bit character whose value is the octal value 2. In the answer you refer to, this character is used as a field separator.

  • Thanks. In C language, how is $\2 specified instead? – Tim Aug 1 '17 at 14:24
  • $ introduces the string in Bash, it has no special meaning in C; if you wanted to store the string $\2 in C, you’d just escape the backslash, $\\2. – Stephen Kitt Aug 1 '17 at 14:28
  • Thanks. In C, how is the octal value 2 specified? Is it 0x2? Is there a similar metacharacter in C to $ in Bash? – Tim Aug 1 '17 at 14:30
  • In C, in a numeric context you just use a leading 0 for an octal value, so 010 is 8; in a string context with a backslash, values are treated as octal anyway. There’s no need for a $-style metacharacter, backslashes are interpreted in this way in all C strings: you’d just write "\2". – Stephen Kitt Aug 1 '17 at 14:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.