Перейдя через стандарт POSIX, я столкнулся с другим довольно техническим/бессмысленным вопросом. Это состояния:
В стиле обратной подстановки команды
<backslash>
сохраняется его буквальное значение, за исключением случаев, когда следуют: '$
', '`
' или<backslash>
.
Легко понять, почему "`
" и "\
" теряют свои буквальные значения: вложенная подстановка команд требует "другого" backquote внутри подстановки команд, что, в свою очередь, вынуждает "потерять свое буквальное значение", Так, например, следующее поведение выглядит разумным:
$ echo $(echo \\\\)
\\
$ echo `echo \\\\`
\
Но как насчет '$'? I.e., что точка или, более конкретно, возможное преимущество следующей разницы?
$ echo $(echo \$\$)
$$
$ echo `echo \$\$`
4735
Как "$" сам по себе не исключается внутри backquotes, похоже, что вы будете использовать либо "$", либо "\\\ $" все время, но не средний случай "\ $".
Чтобы повторить,
$ echo `echo $$` # PID, OK
4735
$ echo `echo \\\$\\\$` # literal "$$", OK
$$
$ echo `echo \$\$` # What the point?
4735
PS: Я знаю, что этот вопрос довольно технический... Я сам все время хожу на более современную подстановку $(...)
, но мне все же интересно.