Can anyone explain what is the difference between
echo $"Starting $CMD"
and
echo "String $CMD"
They seem to look the same.
Look up the QUOTING section of the bash man page:
QUOTING
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. Backslash escape sequences, if present, are decoded as follows: a alert (bell) backspace e an escape character f form feed new line carriage return horizontal tab v vertical tab backslash ' single quote nn the eight-bit character whose value is the octal value nnn (one to three digits) xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) cx a control-x character The expanded result is single-quoted, as if the dollar sign had not been present.
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. Backslash escape sequences, if present, are decoded as follows:
$'string'
The expanded result is single-quoted, as if the dollar sign had not been present.
And note the follow description double quoted strings preceded by $ ($"string"):
$
$"string"
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.
2.1m questions
2.1m answers
60 comments
57.0k users