Определение переменной в 'sh -c'

Я нашел нужную мне настройку в ~ / .vim / after / ftplugin / gitcommit.vim :

setlocal textwidth = 0

7
08.09.2017, 12:26
2 ответа
sh -c 'TMP=??; echo $TMP;'

При использовании двойных кавычек расширение параметра происходит при построении командной строки, т.е. оболочка не видит

TMP=??; echo $TMP;

в качестве его параметра, но

TMP=??; echo ;

, если $TMPпусто в вызывающей оболочке.

14
27.01.2020, 20:13
sh -c 'TMP=??; echo "$TMP"'

С двойными кавычками вокруг кода sh -c, $TMPрасширяется интерактивной оболочкой перед выполнением кода sh -c. С одинарными кавычками $TMPбудет развернут внутри оболочки sh. (Я также правильно процитировал расширение переменной $TMPдляecho).

Одинарные кавычки защищают строку от раскрытия переменных.

Если вы не хотите, чтобы ??рассматривался как шаблон подстановки имени файла внутри скрипта sh -c, используйте

sh -c 'TMP="??"; echo "$TMP"'
9
27.01.2020, 20:13

Теги

Похожие вопросы