任何人都可以解释有什么区别
echo $"Starting $CMD"
和
echo "String $CMD"
他们似乎看起来一样.
解决方法
查看bash手册页的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. Backslash escape sequences,if present,are decoded as
follows:
- \a alert (bell)
- \b backspace
- \e an escape character
- \f form Feed
- \n new line
- \r carriage return
- \t horizontal tab
- \v vertical tab
- \ backslash
- \’ single quote
- \nnn 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.
请注意以下说明双引号字符串前面带$($“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.