Escape знака доллара (\$
).
> sh -c "DOG=happy; echo \$DOG;"
happy
Другой вариант - использовать одинарные кавычки вместо двойных - переменные не оцениваются внутри одинарных кавычек, поэтому $DOG
будет передано в sh
для оценки.
> sh -c 'DOG=happy; echo $DOG'
happy
Однако, если вам нужно как подставить переменные перед переходом на sh
, так и пропустить определенные переменные, обычно проще всего избежать тех, через которые вы хотите пройти.